Height analysis

# install.packages("zoo")
#install.packages("polynom")
library(dplyr)
library(ggplot2)
library(lubridate)   
library(hydroGOF)
library(xtable)
library(knitr)
library(tidyr)
library(RSQLite)
library(agricolae)
library(scales)
library(zoo)
library(lme4)
library(polynom)

lode observed data

upDir <- "D:/R/CombinedData/"
obsData <- "D:/R/CombinedData/"
obsAll <- read.table(paste0(obsData, "ObsAll.txt"),
                   header = TRUE)
obsA1<- obsAll %>%
  dplyr::filter(Collection=="2000_2002")%>%
  mutate(StartDate=dmy(StartDate),MidDate=dmy(MidDate),FinishDate=dmy(FinishDate),Clock.Today=dmy(Clock.Today)) %>%
  #mutate(SowingDate=as.factor(ifelse(SowingDate=="no","Sd_No",paste0("Sd_",SowingDate)))) %>% # assume this is typo to be fixed?
  mutate(GrowthSeason1=as.factor(paste0("Gs_",GrowthSeason))) %>% # creating more intuitive labels here
  mutate(Rotation1=as.factor(paste0("Rt_",Rotation))) %>%
  mutate(ExpUnitCode=as.factor(paste0(Name,GrowthSeason1,Rotation1))) %>%
  mutate(Clock.Today1 = as.POSIXct(paste(Clock.Today,Time),format="%Y-%m-%d %H:%M:%S"))%>%
  mutate(GrowthSeason2=as.factor(paste0("Y",GrowthSeason,"(",Period,")"))) %>%
 mutate(Rotation2=as.factor(ifelse(Rotation=="1",paste0("S",Rotation),paste0("R",Rotation))))
obsA4<- obsAll %>%
  dplyr::filter(Collection=="2014_2018")%>%
  mutate(StartDate=dmy(StartDate),MidDate=dmy(MidDate),FinishDate=dmy(FinishDate),Clock.Today=dmy(Clock.Today)) %>%
  #mutate(SowingDate=as.factor(ifelse(SowingDate=="no","Sd_No",paste0("Sd_",SowingDate)))) %>% # assume this is typo to be fixed?
  mutate(GrowthSeason1=as.factor(paste0("Gs_",GrowthSeason))) %>% # creating more intuitive labels here
  mutate(Rotation1=as.factor(paste0("Rt_",Rotation))) %>%
  mutate(ExpUnitCode=as.factor(paste0(Name,GrowthSeason1,Rotation1))) %>%
  mutate(Clock.Today1 = as.POSIXct(paste(Clock.Today,Time),format="%Y-%m-%d %H:%M:%S"))%>%
  mutate(GrowthSeason2=as.factor(paste0("Y",GrowthSeason,"(",Period,")"))) %>%
  mutate(Rotation2=as.factor(ifelse(Rotation=="1",paste0("S",Rotation),paste0("R",Rotation))))
 
  obsA2<- obsAll %>%
  dplyr::filter(Collection=="1997_2001")%>%
  mutate(StartDate=dmy(StartDate),MidDate=dmy(MidDate),FinishDate=dmy(FinishDate),Clock.Today=dmy(Clock.Today)) %>%
  #mutate(SowingDate=as.factor(ifelse(SowingDate=="no","Sd_No",paste0("Sd_",SowingDate)))) %>% # assume this is typo to be fixed?
  mutate(GrowthSeason1=as.factor(paste0("Gs_",GrowthSeason))) %>% # creating more intuitive labels here
  mutate(Rotation1=as.factor(paste0("Rt_",Rotation))) %>%
  mutate(ExpUnitCode=as.factor(paste0(Name,GrowthSeason1,Rotation1))) %>%
  mutate(Clock.Today1 = as.POSIXct(paste(Clock.Today,Time),format="%Y-%m-%d %H:%M:%S"))%>%
  mutate(GrowthSeason2=as.factor(paste0("Y",GrowthSeason,"(",Period,")"))) %>%
  mutate(Rotation2=as.factor(paste0("R",Rotation)))
  
  obsA3<- obsAll %>%
  dplyr::filter(Collection=="2002_2004")%>%
  mutate(StartDate=dmy(StartDate),MidDate=dmy(MidDate),FinishDate=dmy(FinishDate),Clock.Today=dmy(Clock.Today)) %>%
  #mutate(SowingDate=as.factor(ifelse(SowingDate=="no","Sd_No",paste0("Sd_",SowingDate)))) %>% # assume this is typo to be fixed?
  mutate(GrowthSeason1=as.factor(paste0("Gs_",GrowthSeason))) %>% # creating more intuitive labels here
  mutate(Rotation1=as.factor(paste0("Rt_",Rotation))) %>%
  mutate(ExpUnitCode=as.factor(paste0(Name,GrowthSeason1,Rotation1))) %>%
  mutate(Clock.Today1 = as.POSIXct(paste(Clock.Today,Time),format="%Y-%m-%d %H:%M:%S"))%>%
  mutate(GrowthSeason2=as.factor(paste0("Y",GrowthSeason,"(",Period,")"))) %>%
  mutate(Rotation2=as.factor(paste0("R",Rotation)))
  
obsA<-rbind(obsA2,obsA3,obsA1,obsA4)
summary(obsA)
  Clock.Today                                     Name         Collection         Experiment   Water     
 Min.   :1997-01-28   Iversen_91DefoliationLL       :895   1997_2001: 955   Lincoln2000:1218   dry: 973  
 1st Qu.:2001-02-10   Iversen_121DefoliationLLFDFD5 :777   2000_2002:1067   Lincoln2015:1132   irr:3078  
 Median :2002-08-22   Iversen_8Waterirr             :494   2002_2004: 895   Lincoln2001: 387             
 Mean   :2005-09-21   Iversen_8Waterdry             :461   2010_2012:   0   Lincoln2003: 384             
 3rd Qu.:2015-03-09   Iversen_121DefoliationHHFDFD5 :288   2014_2018:1134   Lincoln2002: 257             
 Max.   :2018-01-15   Iversen_9SowingDateSD1Waterirr:277                    Lincoln2004: 254             
                      (Other)                       :859                    (Other)    : 419             
 Defoliation   SowingDate      FD           Period     GrowthSeason      Rotation       StartDate         
 HH: 288     No     :1850   FD10:  35   00_01  :995   Min.   :1.000   Min.   :1.000   Min.   :1996-11-01  
 LL:3763     no     :1134   FD2 :  34   01_02  :522   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:2000-12-27  
             SD1    : 536   FD5 :3982   02_03  :432   Median :2.000   Median :3.000   Median :2002-06-14  
             SD2    : 199               03_04  :412   Mean   :2.277   Mean   :2.983   Mean   :2005-08-15  
             SD3    : 169               15_16  :410   3rd Qu.:3.000   3rd Qu.:4.000   3rd Qu.:2015-01-30  
             SD4    : 163               16_17  :342   Max.   :6.000   Max.   :7.000   Max.   :2017-12-04  
             (Other):   0               (Other):938                                                       
    MidDate             FinishDate            Interval              Variable     VariableUnits 
 Min.   :1996-12-27   Min.   :1997-02-21   Min.   :  0.00   NodeNumber  :792   %        : 220  
 1st Qu.:2001-02-10   1st Qu.:2001-03-06   1st Qu.: 19.00   Height      :697   cm       : 454  
 Median :2002-08-09   Median :2002-10-05   Median : 32.00   shootbiomass:585   fractio0l: 833  
 Mean   :2005-09-14   Mean   :2005-10-15   Mean   : 36.97   LAI         :538   Fraction : 434  
 3rd Qu.:2015-03-13   3rd Qu.:2015-04-24   3rd Qu.: 48.00   SWC         :284   kg/ha    :1045  
 Max.   :2017-12-25   Max.   :2018-01-15   Max.   :122.00   Fraction    :220   m2/m2    : 538  
                                                            (Other)     :935   mm       : 527  
       Time         Observed           StdDEV          ExperimentID  TreatmentID         ID     
 12:00:00:4051   Min.   :   0.00   Min.   :   0.0000   E1: 955      ILL    :1389   E3ILL  :895  
                 1st Qu.:   3.50   1st Qu.:   0.0000   E2:1067      ILLF5  : 777   E5ILLF5:777  
                 Median :  12.47   Median :   0.2582   E3: 895      DLL    : 461   E1ILL  :494  
                 Mean   : 585.40   Mean   :  88.3883   E4:   0      IHHF5  : 288   E1DLL  :461  
                 3rd Qu.: 623.15   3rd Qu.:  30.3450   E5:1134      ILLS1  : 277   E5IHHF5:288  
                 Max.   :8556.38   Max.   :2532.5264                DLLS1  : 259   E2ILLS1:277  
                                   NA's   :1192                     (Other): 600   (Other):859  
 GrowthSeason1 Rotation1                            ExpUnitCode    Clock.Today1                
 Gs_1:1352     Rt_1:1175   Iversen_91DefoliationLLGs_2Rt_1:  84   Min.   :1997-01-28 12:00:00  
 Gs_2:1447     Rt_2: 823   Iversen_91DefoliationLLGs_1Rt_1:  72   1st Qu.:2001-02-10 12:00:00  
 Gs_3: 530     Rt_3: 613   Iversen_91DefoliationLLGs_1Rt_4:  67   Median :2002-08-22 12:00:00  
 Gs_4: 272     Rt_4: 458   Iversen_91DefoliationLLGs_1Rt_5:  67   Mean   :2005-09-21 17:05:34  
 Gs_5: 399     Rt_5: 443   Iversen_91DefoliationLLGs_1Rt_3:  66   3rd Qu.:2015-03-09 12:00:00  
 Gs_6:  51     Rt_6: 397   Iversen_91DefoliationLLGs_1Rt_6:  62   Max.   :2018-01-15 12:00:00  
               Rt_7: 142   (Other)                        :3633                                
   GrowthSeason2    Rotation2  
 Y1(00_01): 596   R2     :823  
 Y1(02_03): 432   S1     :768  
 Y2(01_02): 428   R3     :613  
 Y2(03_04): 412   R4     :458  
 Y2(15_16): 410   R5     :443  
 Y5(00_01): 399   R1     :407  
 (Other)  :1374   (Other):539  
 obsA

Load Tt and Join Observed data together

upDir <- "D:/R/"
obsData <- "D:/R/TtAll/"
Tt<- read.table(paste0(obsData, "df.all.txt"),
               header = TRUE)
TtA <- Tt %>% mutate(Clock.Today=dmy(Clock.Today), ExpUnitCode=as.factor(ExpName))
TtA
ObsH <-merge(obsA,TtA,by=c("Clock.Today","ExpUnitCode")) %>%
  mutate(GrowthRotation=as.factor(paste0(GrowthSeason.x,Rotation.x)))%>%
  dplyr::filter(Water.x=="irr")%>%
  dplyr::filter(Defoliation.x=="LL")%>%
  dplyr::filter(Variable=="Height")%>%
  dplyr::filter(Tb==1)
  
summary(ObsH)
  Clock.Today                                         ExpUnitCode                              Name    
 Min.   :1997-10-23   Iversen_9SowingDateSD2WaterirrGs_1Rt_1: 14   Iversen_121DefoliationLLFDFD5 :108  
 1st Qu.:2001-02-20   Iversen_9SowingDateSD1WaterirrGs_1Rt_1: 12   Iversen_91DefoliationLL       :107  
 Median :2002-10-25   Iversen_9SowingDateSD3WaterirrGs_1Rt_1: 11   Iversen_8Waterirr             : 68  
 Mean   :2005-09-17   Iversen_9SowingDateSD4WaterirrGs_1Rt_1: 11   Iversen_9SowingDateSD1Waterirr: 67  
 3rd Qu.:2015-02-09   Iversen_8WaterirrGs_5Rt_1             : 10   Iversen_9SowingDateSD2Waterirr: 25  
 Max.   :2018-01-15   Iversen_91DefoliationLLGs_2Rt_1       : 10   Iversen_9SowingDateSD3Waterirr: 18  
                      (Other)                               :340   (Other)                       : 15  
     Collection       Experiment.x Water.x   Defoliation.x  SowingDate.x   FD.x         Period   
 1997_2001: 68   Lincoln2000:131   dry:  0   HH:  0        No     :175   FD10:  0   00_01  :128  
 2000_2002:125   Lincoln2015:108   irr:408   LL:408        no     :108   FD2 :  0   02_03  : 52  
 2002_2004:107   Lincoln2003: 54                           SD1    : 67   FD5 :408   03_04  : 48  
 2010_2012:  0   Lincoln2001: 35                           SD2    : 25              16_17  : 39  
 2014_2018:108   Lincoln2004: 31                           SD3    : 18              01_02  : 38  
                 Lincoln2002: 22                           SD4    : 15              15_16  : 35  
                 (Other)    : 27                           (Other):  0              (Other): 68  
 GrowthSeason.x    Rotation.x      StartDate             MidDate             FinishDate        
 Min.   :1.000   Min.   :1.000   Min.   :1997-10-07   Min.   :1997-10-28   Min.   :1997-11-19  
 1st Qu.:1.000   1st Qu.:1.000   1st Qu.:2001-01-24   1st Qu.:2001-02-13   1st Qu.:2001-03-23  
 Median :2.000   Median :3.000   Median :2002-10-06   Median :2002-10-26   Median :2002-11-16  
 Mean   :2.105   Mean   :3.098   Mean   :2005-08-16   Mean   :2005-09-14   Mean   :2005-10-14  
 3rd Qu.:3.000   3rd Qu.:5.000   3rd Qu.:2015-01-30   3rd Qu.:2015-02-19   3rd Qu.:2015-03-11  
 Max.   :5.000   Max.   :7.000   Max.   :2017-12-04   Max.   :2017-12-25   Max.   :2018-01-15  
                                                                                               
    Interval            Variable     VariableUnits       Time        Observed          StdDEV      
 Min.   :  0.00   Height    :408   %        :  0   12:00:00:408   Min.   :  0.00   Min.   : 0.000  
 1st Qu.: 14.75   Branch    :  0   cm       :233                  1st Qu.: 10.17   1st Qu.: 0.000  
 Median : 28.00   CrownWt   :  0   fractio0l:  0                  Median : 35.62   Median : 3.107  
 Mean   : 32.18   Fraction  :  0   Fraction :  0                  Mean   :107.19   Mean   :12.001  
 3rd Qu.: 41.00   HardStemWt:  0   kg/ha    :  0                  3rd Qu.:129.12   3rd Qu.:16.955  
 Max.   :116.00   LAI       :  0   m2/m2    :  0                  Max.   :681.30   Max.   :91.520  
                  (Other)   :  0   mm       :175                                   NA's   :229     
 ExperimentID  TreatmentID        ID      GrowthSeason1 Rotation1   Clock.Today1                
 E1: 68       ILL    :175   E5ILLF5:108   Gs_1:160      Rt_1:112   Min.   :1997-10-23 12:00:00  
 E2:125       ILLF5  :108   E3ILL  :107   Gs_2:140      Rt_2: 80   1st Qu.:2001-02-20 12:00:00  
 E3:107       ILLS1  : 67   E1ILL  : 68   Gs_3: 54      Rt_3: 59   Median :2002-10-25 12:00:00  
 E4:  0       ILLS2  : 25   E2ILLS1: 67   Gs_4: 13      Rt_4: 50   Mean   :2005-09-17 22:25:44  
 E5:108       ILLS3  : 18   E2ILLS2: 25   Gs_5: 41      Rt_5: 46   3rd Qu.:2015-02-10 06:00:00  
              ILLS4  : 15   E2ILLS3: 18   Gs_6:  0      Rt_6: 42   Max.   :2018-01-15 12:00:00  
              (Other):  0   (Other): 15                 Rt_7: 19                                
   GrowthSeason2   Rotation2       year           day             rain             maxt      
 Y1(00_01): 87   R2     :80   Min.   :1997   Min.   :  1.0   Min.   : 0.000   Min.   : 7.90  
 Y1(02_03): 52   S1     :77   1st Qu.:2001   1st Qu.: 63.0   1st Qu.: 0.000   1st Qu.:15.32  
 Y2(03_04): 48   R3     :59   Median :2002   Median :138.5   Median : 0.000   Median :19.00  
 Y5(00_01): 41   R4     :50   Mean   :2005   Mean   :170.4   Mean   : 0.876   Mean   :19.17  
 Y3(16_17): 39   R5     :46   3rd Qu.:2015   3rd Qu.:292.0   3rd Qu.: 0.000   3rd Qu.:22.23  
 Y2(01_02): 38   R6     :42   Max.   :2018   Max.   :365.0   Max.   :31.800   Max.   :33.80  
 (Other)  :103   (Other):54                                                                  
      mint             mean            radn            wind             vp              Pp       
 Min.   :-4.900   Min.   : 2.55   Min.   : 1.50   Min.   :0.700   Min.   : 5.10   Min.   :10.02  
 1st Qu.: 4.375   1st Qu.:10.40   1st Qu.: 9.70   1st Qu.:2.900   1st Qu.:10.00   1st Qu.:12.21  
 Median : 8.700   Median :13.20   Median :16.14   Median :3.900   Median :11.40   Median :14.27  
 Mean   : 7.853   Mean   :13.49   Mean   :16.73   Mean   :3.997   Mean   :11.77   Mean   :13.93  
 3rd Qu.:11.300   3rd Qu.:16.50   3rd Qu.:22.62   3rd Qu.:4.900   3rd Qu.:13.72   3rd Qu.:15.82  
 Max.   :20.600   Max.   :26.20   Max.   :33.40   Max.   :9.300   Max.   :22.00   Max.   :16.65  
                                                                                                 
       Tb        TTbeta            Tbb       TTbroken           TbF        TTfick      
 Min.   :1   Min.   : 0.128   Min.   :1   Min.   : 1.841   Min.   :1   Min.   : 2.222  
 1st Qu.:1   1st Qu.: 2.247   1st Qu.:1   1st Qu.: 6.822   1st Qu.:1   1st Qu.: 8.172  
 Median :1   Median : 4.118   Median :1   Median : 9.015   Median :1   Median :10.646  
 Mean   :1   Mean   : 5.812   Mean   :1   Mean   : 9.535   Mean   :1   Mean   :10.878  
 3rd Qu.:1   3rd Qu.: 8.085   3rd Qu.:1   3rd Qu.:12.040   3rd Qu.:1   3rd Qu.:13.588  
 Max.   :1   Max.   :23.343   Max.   :1   Max.   :20.258   Max.   :1   Max.   :20.813  
                                                                                       
                                   ExpName         Experiment.y Water.y   Defoliation.y  SowingDate.y
 Iversen_9SowingDateSD2WaterirrGs_1Rt_1: 14   Lincoln1997: 68   dry:  0   HH:  0        No     :175  
 Iversen_9SowingDateSD1WaterirrGs_1Rt_1: 12   Lincoln2000:110   irr:408   LL:408        no     :108  
 Iversen_9SowingDateSD3WaterirrGs_1Rt_1: 11   Lincoln2001: 15             LS:  0        SD1    : 67  
 Iversen_9SowingDateSD4WaterirrGs_1Rt_1: 11   Lincoln2002:107             SL:  0        SD2    : 25  
 Iversen_8WaterirrGs_5Rt_1             : 10   Lincoln2010:  0             SS:  0        SD3    : 18  
 Iversen_91DefoliationLLGs_2Rt_1       : 10   Lincoln2015:108                           SD4    : 15  
 (Other)                               :340                                             (Other):  0  
   FD.y     GrowthSeason.y   Rotation.y   Tt_beta_sum        Tt_fick_sum       Tt_broken_sum     
 FD10:  0   Gs_1:160       Rt_1   :112   Min.   :  0.2834   Min.   :   4.022   Min.   :   3.333  
 FD2 :  0   Gs_2:140       Rt_2   : 80   1st Qu.: 60.8023   1st Qu.: 165.210   1st Qu.: 142.690  
 FD5 :408   Gs_3: 54       Rt_3   : 59   Median :123.4401   Median : 299.224   Median : 258.979  
            Gs_4: 13       Rt_4   : 50   Mean   :157.2934   Mean   : 326.606   Mean   : 283.618  
            Gs_5: 41       Rt_5   : 46   3rd Qu.:218.2569   3rd Qu.: 453.159   3rd Qu.: 395.238  
            Gs_6:  0       Rt_6   : 42   Max.   :722.6708   Max.   :1186.654   Max.   :1051.876  
                           (Other): 19                                                           
      Ppm            Tmean        GrowthRotation
 Min.   :10.25   Min.   : 7.024   11     : 60   
 1st Qu.:11.99   1st Qu.:10.974   12     : 38   
 Median :14.48   Median :13.963   21     : 24   
 Mean   :13.84   Mean   :13.226   26     : 24   
 3rd Qu.:15.99   3rd Qu.:15.771   13     : 23   
 Max.   :16.55   Max.   :19.327   22     : 23   
                                  (Other):216   
mytheme1<-theme(
     panel.spacing=unit(.01, "lines"),
     panel.border = element_rect(colour = "black",size=1), 
     panel.grid.major = element_blank(),
     panel.grid.minor = element_blank(),
     axis.line = element_line(colour = "black",size = 1),
     axis.text.x = element_text(face = "plain", color = "black", size = 14,angle=90, vjust=0.5, hjust = 1),
     axis.text.y = element_text(face = "plain", color = "black", size = 14),
     axis.title.x=element_text(face="bold",colour="black",size = 14),
     axis.title.y=element_text(face="bold",colour="black",size = 14),
     strip.background = element_rect(colour = "black", fill = "white",size=1),
     strip.text.x = element_text(size=14, angle=0, face = "plain"), 
     strip.text.y = element_text(size=14, face="plain"),
     legend.title = element_text(colour="black", size=14, face="bold"),
     axis.text = element_text(face = "bold", vjust = 0.5, size = 14))
mytheme3<-theme(
     legend.title = element_text(colour="black", size=14, face="bold"),
     legend.text = element_text(colour="black", size = 14,face="plain"),
     panel.spacing=unit(.01, "lines"),
     panel.border = element_rect(colour = "black",size=1), 
     panel.grid.major = element_blank(),
     panel.grid.minor = element_blank(),
     axis.line = element_line(colour = "black",size = 1),
     axis.text.x = element_text(face = "plain", color = "black", size = 14, vjust=0.5, hjust = 1),
     axis.text.y = element_text(face = "plain", color = "black", size = 14),
     axis.title.x=element_text(face="bold",colour="black",size = 14),
     axis.title.y=element_text(face="bold",colour="black",size = 14),
     strip.background = element_rect(colour = "black", fill = "white",size=1),
     strip.text.x = element_text(size=14, angle=0, face = "plain"), 
     strip.text.y = element_text(size=14, face="plain"),
     axis.text = element_text(face = "bold", vjust = 0.5, size = 14),
    legend.position = "right", legend.box = "vertical")

Height against Mean temperature

obsheight<-ObsH%>%
  dplyr::filter(Name=="Iversen_8Waterirr")
obsheight$Rotation2<- factor(obsheight$Rotation2, levels=c("R1", "R2", "R3", "R4", "R5","R6", "R7"))
obsheight%>%
  ggplot(aes(x=Tt_broken_sum, y=Observed), colour=factor(Name))+geom_point(size=2)+theme_bw()+xlab("Mean temperature (°C)")+ylab("Plant height (mm)")+ facet_grid(GrowthSeason2~Rotation2)+
  geom_smooth(method = "lm", se = TRUE,linetype=1 , colour="black")+ 
  ggtitle("E1ILL(Iversen_8Waterirr)")+mytheme1+
 geom_smooth(method = "lm", se = TRUE, linetype = 1, colour="blue")

ggsave("D:/R/Pictures/Height/Iversen_8WaterirrHeight.png", width=8, height=6, dpi=500)
obsheight<-ObsH%>%
  dplyr::filter(Name=="Iversen_8Waterirr")
obsheight$Rotation2<- factor(obsheight$Rotation2, levels=c("R1", "R2", "R3", "R4", "R5","R6", "R7"))
obsheight%>%
  ggplot(aes(x=Tt_broken_sum, y=Observed), colour=factor(Name))+geom_point(size=2)+theme_bw()+xlab("Thermal time (°Cd)")+ylab("Plant height (mm)")+ facet_grid(GrowthSeason2~Rotation2)+
  geom_smooth(method = "lm", se = TRUE,linetype=1 , colour="black")+
  ggtitle("E1ILL(Iversen_8Waterirr)")+mytheme1+
  scale_x_continuous(breaks = seq(0, 600, by =200), limits=c(0,500))+
  scale_y_continuous(breaks = seq(0, 550, by =200), limits=c(0,600))+
 geom_smooth(method = "lm", se = TRUE, linetype = 1, colour="blue")

ggsave("D:/R/Pictures/Height/Iversen_8WaterirrHeight.png", width=8, height=6, dpi=500)

Iversen_91DefoliationLL

obsheight1<-ObsH%>%
  dplyr::filter(Name=="Iversen_91DefoliationLL")
obsheight1$Rotation2<- factor(obsheight1$Rotation2, levels=c("R1", "R2", "R3", "R4", "R5","R6", "R7"))
obsheight1%>%
  ggplot(aes(x=Tt_broken_sum, y=Observed), colour=factor(Name))+geom_point(size=2)+theme_bw()+xlab("Thermal time (°Cd)")+ylab("Plant height (mm)")+ggtitle("E3ILL(Iversen_91DefoliationLL)")+
 facet_grid(GrowthSeason2~Rotation2)+
  geom_smooth(method = "lm", se = TRUE,linetype=1 , colour="black")+
  mytheme1+
  scale_x_continuous(breaks = seq(0, 600, by =200), limits=c(0,500))+
  scale_y_continuous(breaks = seq(0, 550, by =200), limits=c(0,600))+
 geom_smooth(method = "lm", se = TRUE, linetype = 1, colour="blue")

ggsave("D:/R/Pictures/Height/Iversen_91DefoliationLL.png", width=8, height=6, dpi=500)

mean temperature

obsheight1<-ObsH%>%
  dplyr::filter(Name=="Iversen_91DefoliationLL")
obsheight1%>%
  ggplot(aes(x=mean, y=Observed), colour=factor(Name))+geom_point(size=2)+theme_bw()+xlab("Thermal time (°Cd)")+ylab("Plant height (mm)")+ggtitle("Iversen_91DefoliationLL")+
 facet_grid(GrowthSeason2~Rotation2)+
  geom_smooth(method = "lm", se = TRUE,linetype=1 , colour="black")+
  mytheme1+
  # scale_x_continuous(breaks = seq(0, 600, by =200), limits=c(0,500))+
  # scale_y_continuous(breaks = seq(0, 550, by =200), limits=c(0,600))+
 geom_smooth(method = "lm", se = TRUE, linetype = 1, colour="blue")

#ggsave("D:/R/Pictures/Height/Iversen_91DefoliationLL.png", width=8, height=6, dpi=500)

Iversen_9SowingDateSD1Waterirr

obsheight3<-ObsH%>%
  dplyr::filter(Name=="Iversen_9SowingDateSD1Waterirr")%>%
  mutate(Observed=Observed*10)
 obsheight3$Rotation2<- factor(obsheight3$Rotation2, levels=c("S1", "R2", "R3", "R4", "R5","R6", "R7"))
obsheight3%>%
  ggplot(aes(x=Tt_broken_sum, y=Observed), colour=factor(Name))+geom_point(size=2)+theme_bw()+xlab("Thermal time (°Cd)")+ylab("Plant height (mm)")+ggtitle("E2ILLS1(Iversen_9SowingDateSD1Waterirr)")+
 facet_grid(GrowthSeason2~Rotation2)+
  geom_smooth(method = "lm", se = TRUE, linetype = 1, colour="black")+
 mytheme1+
  scale_x_continuous(breaks = seq(0, 800, by =300), limits=c(0,750))+
  scale_y_continuous(breaks = seq(0, 600, by =200), limits=c(0,700))+
 geom_smooth(method = "lm", se = TRUE, linetype = 1, colour="blue")

ggsave("D:/R/Pictures/Height/Iversen_9SowingDateSD1Waterirr.png", width=8, height=5, dpi=500)

Iversen_9SowingDateSD2Waterirr

obsheight1<-ObsH%>%
  dplyr::filter(Name=="Iversen_9SowingDateSD2Waterirr")%>%
  mutate(Observed=Observed*10)
obsheight1$Rotation2<- factor(obsheight1$Rotation2, levels=c("S1", "R2", "R3", "R4", "R5","R6", "R7"))
 
obsheight1%>%
  ggplot(aes(x=Tt_broken_sum, y=Observed), colour=factor(Name))+geom_point(size=2)+theme_bw()+xlab("Thermal time (°Cd)")+ylab("Plant height (mm)")+ggtitle("E2ILLS2(Iversen_9SowingDateSD2Waterirr)")+
 facet_grid(GrowthSeason2~Rotation2)+
  geom_smooth(method = "lm", se = TRUE, linetype = 1, colour="blue")+
  scale_x_continuous(breaks = seq(0, 800, by =200), limits=c(0,900))+
  scale_y_continuous(breaks = seq(0, 600, by =200), limits=c(0,700))+
  theme(
     panel.spacing=unit(.01, "lines"),
     panel.border = element_rect(colour = "black",size=1), 
     panel.grid.major = element_blank(),
     panel.grid.minor = element_blank(),
     axis.line = element_line(colour = "black",size = 1),
     axis.text.x = element_text(face = "plain", color = "black", size = 14, vjust=0.5, hjust = 1),
     axis.text.y = element_text(face = "plain", color = "black", size = 14),
     axis.title.x=element_text(face="bold",colour="black",size = 14),
     axis.title.y=element_text(face="bold",colour="black",size = 14),
     strip.background = element_rect(colour = "black", fill = "white",size=1),
     strip.text.x = element_text(size=14, angle=0, face = "plain"), 
     strip.text.y = element_text(size=14, face="plain"),
     legend.title = element_text(colour="black", size=14, face="bold"),
     axis.text = element_text(face = "bold", vjust = 0.5, size = 14))

ggsave("D:/R/Pictures/Height/Iversen_9SowingDateSD2Waterirr.png", width=8, height=3, dpi=500)

Iversen_9SowingDateSD3Waterirr

obsheight1<-ObsH%>%
  dplyr::filter(Name=="Iversen_9SowingDateSD3Waterirr")%>%
  mutate(Observed=Observed*10)
obsheight1$Rotation2<- factor(obsheight1$Rotation2, levels=c("S1", "R2", "R3", "R4", "R5","R6", "R7"))
 
obsheight1
obsheight1%>%
  ggplot(aes(x=Tt_broken_sum, y=Observed), colour=factor(Name))+geom_point(size=2)+theme_bw()+xlab("Thermal time (°Cd)")+ylab("Plant height (mm)")+ggtitle("E2ILLS3(Iversen_9SowingDateSD3Waterirr)")+
 facet_grid(GrowthSeason2~Rotation2)+
  geom_smooth(method = "lm", se = TRUE, linetype = 1, colour="blue")+
  scale_x_continuous(breaks = seq(0, 1000, by =200), limits=c(0,1100))+
  scale_y_continuous(breaks = seq(0, 600, by =200), limits=c(0,700))+
  #remove grid lines 
  theme(
     panel.spacing=unit(.01, "lines"),
     panel.border = element_rect(colour = "black",size=1), 
     panel.grid.major = element_blank(),
     panel.grid.minor = element_blank(),
     axis.line = element_line(colour = "black",size = 1),
     axis.text.x = element_text(face = "plain", color = "black", size = 14, vjust=0.5, hjust = 1),
     axis.text.y = element_text(face = "plain", color = "black", size = 14),
     axis.title.x=element_text(face="bold",colour="black",size = 14),
     axis.title.y=element_text(face="bold",colour="black",size = 14),
     strip.background = element_rect(colour = "black", fill = "white",size=1),
     strip.text.x = element_text(size=14, angle=0, face = "plain"), 
     strip.text.y = element_text(size=14, face="plain"),
     legend.title = element_text(colour="black", size=14, face="bold"),
     axis.text = element_text(face = "bold", vjust = 0.5, size = 14))

ggsave("D:/R/Pictures/Height/Iversen_9SowingDateSD3Waterirr.png", width=8, height=3, dpi=500)
 

Iversen_9SowingDateSD4Waterirr

obsheight1<-ObsH%>%
  dplyr::filter(Name=="Iversen_9SowingDateSD4Waterirr")%>%
  mutate(Observed=Observed*10)
obsheight1$Rotation2<- factor(obsheight1$Rotation2, levels=c("S1", "R2", "R3", "R4", "R5","R6", "R7"))
 
obsheight1
obsheight1%>%
  ggplot(aes(x=Tt_broken_sum, y=Observed), colour=factor(Name))+geom_point(size=2)+theme_bw()+xlab("Thermal time(°Cd)")+ylab("Plant height (mm)")+ggtitle("E2ILLS4(Iversen_9SowingDateSD4Waterirr)")+
 facet_grid(GrowthSeason2~Rotation2)+
  geom_smooth(method = "lm", se = TRUE, linetype = 1, colour="blue")+
  scale_x_continuous(breaks = seq(0, 1000, by =200), limits=c(0,1100))+
  scale_y_continuous(breaks = seq(0, 600, by =200), limits=c(0,600))+
  #remove grid lines 
  theme(
     panel.spacing=unit(.01, "lines"),
     panel.border = element_rect(colour = "black",size=1), 
     panel.grid.major = element_blank(),
     panel.grid.minor = element_blank(),
     axis.line = element_line(colour = "black",size = 1),
     axis.text.x = element_text(face = "plain", color = "black", size = 14, vjust=0.5, hjust = 1),
     axis.text.y = element_text(face = "plain", color = "black", size = 14),
     axis.title.x=element_text(face="bold",colour="black",size = 14),
     axis.title.y=element_text(face="bold",colour="black",size = 14),
     strip.background = element_rect(colour = "black", fill = "white",size=1),
     strip.text.x = element_text(size=14, angle=0, face = "plain"), 
     strip.text.y = element_text(size=14, face="plain"),
     legend.title = element_text(colour="black", size=14, face="bold"),
     axis.text = element_text(face = "bold", vjust = 0.5, size = 14))

ggsave("D:/R/Pictures/Height/Iversen_9SowingDateSD4Waterirr.png", width=8, height=3, dpi=500)
 

Iverson12DefoliationFD5

obsheight1<-ObsH%>%
  dplyr::filter(Name=="Iversen_121DefoliationLLFDFD5")%>%
  mutate(Observed=Observed*10)
 obsheight1$Rotation2<- factor(obsheight1$Rotation2, levels=c("S1", "R2", "R3", "R4", "R5","R6", "R7"))
obsheight1%>%
  ggplot(aes(x=Tt_broken_sum, y=Observed), colour=factor(Name))+geom_point(size=2)+theme_bw()+xlab("Thermal time(°Cd)")+ylab("Plant height (mm)")+ggtitle("E5ILLF5(Iversen_121DefoliationLLFDFD5)")+
 facet_grid(GrowthSeason2~Rotation2)+
  geom_smooth(method = "lm", se = TRUE, linetype = 1, colour="blue")+
  scale_y_continuous(breaks = seq(0, 1000, by =600), limits=c(0,900))+
  scale_x_continuous(breaks = seq(0, 600, by =200), limits=c(0,500))+
   mytheme1

  ggsave("D:/R/Pictures/Height/Iversen_121DefoliationLLFDFD5.png", width=8, height=6, dpi=500)
 

convert unit

calculate for heightchron

#detach(package:plyr)
obsH2<-ObsH%>%
  dplyr::filter(Collection!="1997_2001")%>%
  dplyr::filter(Collection!="2002_2004")%>%
  mutate(Observed=Observed*10)
obsH3<-ObsH%>%
  dplyr::filter(Collection!="2000_2002")%>%
  dplyr::filter(Collection!="2014_2018")
obsH3
obsHN<-rbind(obsH2,obsH3)
obsHN
obsSlope <- obsHN%>%
  group_by(Name,GrowthSeason.x,Rotation.x,Collection,Tmean,Ppm,GrowthRotation,ID,ExperimentID) %>%
  do(mod = lm(Tt_broken_sum~Observed,data=.)) %>%
  mutate(slope = summary(mod)$coeff[2]) %>%
  dplyr::select(-mod)
obsSlope
obsHanalysis<- obsHN%>%
  group_by(Name,GrowthSeason.x,Rotation.x,Collection,ID,ExperimentID) %>%
  do(mod = lm(Tt_broken_sum~Observed,data=.)) %>%
  mutate(slope = summary(mod)$coeff[2]) %>%
  mutate(R2 = summary(mod)$r.squared)%>%
  mutate(P=anova(mod)$'Pr(>F)'[1])%>%  
  mutate(intcp= summary(mod)$coeff[1])%>%
  dplyr::select(-mod)
ANOVA F-tests on an essentially perfect fit are unreliableANOVA F-tests on an essentially perfect fit are unreliable
obsHanalysis
write.csv(obsHanalysis,"D:/R/obsHanalysis.csv", row.names = FALSE)

load Rotation and Growth season

library(plyr)
--------------------------------------------------------------------------------------------------
You have loaded plyr after dplyr - this is likely to cause problems.
If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
library(plyr); library(dplyr)
--------------------------------------------------------------------------------------------------

Attaching package: <U+393C><U+3E31>plyr<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:lubridate<U+393C><U+3E32>:

    here

The following objects are masked from <U+393C><U+3E31>package:dplyr<U+393C><U+3E32>:

    arrange, count, desc, failwith, id, mutate, rename, summarise, summarize
phyll <- "D:\\R\\"
StartGrazing <- read.table(paste0(phyll, "ExperimentList.txt"), 
                      header = TRUE)
StartGrazing1<-StartGrazing %>%
  mutate(GrowthRotation= as.factor(paste0(GrowthSeason,Rotation)))
HchronPp<- merge(StartGrazing1,obsSlope,by=c("Name","Collection","GrowthRotation"))
HchronPp1<-HchronPp%>%
dplyr::filter(Name!="Iversen_8Waterirr"|GrowthRotation!="57")%>%
dplyr::filter(Name!="Iversen_121DefoliationLLFDFD5"|GrowthRotation!="36")%>%
 dplyr::filter(Name!="Iversen_121DefoliationLLFDFD5"|GrowthRotation!="14")%>%
 dplyr::filter(Name!="Iversen_121DefoliationLLFDFD5"|GrowthRotation!="37")%>%
 dplyr::filter(Name!="Iversen_121DefoliationLLFDFD5"|GrowthRotation!="12")%>%
 dplyr::filter(Name!="Iversen_121DefoliationLLFDFD5"|GrowthRotation!="41")%>%
 dplyr::filter(Name!="Iversen_8Waterirr"|GrowthRotation!="26")%>%
 dplyr::filter(Name!="Iversen_8Waterirr"|GrowthRotation!="32")%>%
 dplyr::filter(Name!="Iversen_91DefoliationLL"|GrowthRotation!="27")%>%
 dplyr::filter(Name!="Iversen_91DefoliationLL"|GrowthRotation!="17")%>%
 dplyr::filter(Name!="Iversen_91DefoliationLL"|GrowthRotation!="11")%>%
 #   # dplyr::filter(Name!="Iversen_91DefoliationLL"|GrowthRotation!="17")%>%
 dplyr::filter(Name!="Iversen_9SowingDateSD1Waterirr"|GrowthRotation!="14")%>%
 dplyr::filter(Name!="Iversen_9SowingDateSD1Waterirr"|GrowthRotation!="21")%>%
 #   # dplyr::filter(Name!="Iversen_9SowingDateSD1Waterirr"|GrowthRotation!="26")%>%
 dplyr::filter(Name!="Iversen_9SowingDateSD2Waterirr"|GrowthRotation!="13")
 ##dplyr::filter(Name!="Iversen_9SowingDateSD4Waterirr"|GrowthRotation!="13")%>%
 #dplyr::filter(Stage!="Seedling")
# my.formula <- slope ~ poly(Ppm, 2, raw = TRUE)
# m <- lm(my.formula, HchronPp1)
# my.eq <- as.character(signif(as.polynomial(coef(m)), 2))
# 
# 
# label.text <- paste(gsub("italic(y)=x", "~italic(x)", my.eq, fixed = TRUE),
#               paste("italic(R)^2",  
#                     format(summary(m)$r.squared, digits = 2), 
#                     sep = "~`=`~"),
#                     sep = "~~~~")
my.formula  <- function(HchronPp1){
  my.formula <- slope ~ poly(Ppm, 2, raw = TRUE)
  m <- lm(my.formula, HchronPp1)
  my.eq <- as.character(signif(as.polynomial(coef(m)), 2))
  label.text <- paste("y","'='",paste(gsub(y, "~italic(x)",my.eq, fixed = TRUE)),
              paste("italic(R)^2",format(summary(m)$r.squared, digits = 2), 
                    sep = "~`=`~"),
                    sep = "~~~~")
  as.character(as.expression(label.text));                 
}
my.eqs <- ddply(HchronPp1,.(Stage),my.formula)
argument 'pattern' has length > 1 and only the first element will be usedargument 'pattern' has length > 1 and only the first element will be used
b<-HchronPp1%>%
  ggplot(aes(x=Ppm, y=slope, colour=factor(ID),label=GrowthRotation))+geom_text()+theme_bw()+xlab("Mean photoperiod (h)")+ylab(bquote(bold('Heightchron ('*'°Cd'~'mm'^-1*')')))+
  geom_smooth(method = "lm", se = TRUE, formula=y ~ poly(x, 2, raw=TRUE), colour="darkgrey")+
  facet_wrap(~Stage,ncol = 2)+mytheme3+theme(legend.title = element_blank())
#b + annotate(geom = "text", x = 11.5, y = 2, label = label.text, 
             #family = "serif", hjust = 0, parse = TRUE, size = 4)m
b+geom_text(data = my.eqs, aes(x = 13.7, y = 2.5, label = V1), 
          color = 'black',  parse = TRUE, size=4)

detach(package:plyr)
ggsave("D:/R/Pictures/Height/Heightchorn.png", width=8, height=4, dpi=500)

base photoperiod

library(plyr)
--------------------------------------------------------------------------------------------------
You have loaded plyr after dplyr - this is likely to cause problems.
If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
library(plyr); library(dplyr)
--------------------------------------------------------------------------------------------------

Attaching package: <U+393C><U+3E31>plyr<U+393C><U+3E32>

The following object is masked from <U+393C><U+3E31>package:lubridate<U+393C><U+3E32>:

    here

The following objects are masked from <U+393C><U+3E31>package:dplyr<U+393C><U+3E32>:

    arrange, count, desc, failwith, id, mutate, rename, summarise, summarize
Pb<-HchronPp1%>%
   mutate(pb=1/slope)
lm_eqn <- function(Pb){
  m <- lm(pb ~ Ppm, Pb);
  eq <- substitute(italic(y) == Ppm + pb %.% italic(Ppm)*","~~italic(R)^2~"="~r2, 
                   list(Ppm = format(coef(m)[1], digits = 2), 
                         pb = format(coef(m)[2], digits = 2), 
                       r2 = format(summary(m)$r.squared, digits = 3)))
  as.character(as.expression(eq));                 
}
eqns <- ddply(Pb,.(Stage),lm_eqn)
Pb%>%
  ggplot(aes(x=Ppm, y=pb, colour=factor(ID),label=GrowthRotation))+geom_text()+theme_bw()+xlab("Mean photoperiod (h)")+ylab("1/y")+
  geom_smooth(method = "lm", se = TRUE,  colour="darkgrey")+
  facet_wrap(~Stage,ncol = 2)+mytheme3+theme(legend.title = element_blank())+
  scale_x_continuous(breaks = seq(9, 18, by =3), limits=c(9,18))+
  geom_text(data = eqns, aes(x = 13.5, y = 2.5, label = V1), 
          color = 'black',  parse = TRUE, size=4.8)

detach(package:plyr)
ggsave("D:/R/Pictures/Height/Heightchorny1.png", width=8, height=4, dpi=500)
HchronPp
X<-HchronPp1$Ppm
Y<-HchronPp1$slope
Xsq<-X^2
Xcub<-X^3
plot(X,Y, pch=19)
model1<-lm(Y~X)
model2<-lm(Y~X+Xsq)
model3<-lm(Y~X+Xsq+Xcub)
mod_lm <-lm(Y~X*(X<14.2)+X*(X>=14.2),data=HchronPp)
anova(model1)
Analysis of Variance Table

Response: Y
          Df Sum Sq Mean Sq F value   Pr(>F)    
X          1 5.3993  5.3993  52.073 2.48e-09 ***
Residuals 51 5.2881  0.1037                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
summary(model1)

Call:
lm(formula = Y ~ X)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.42533 -0.19184 -0.09654  0.07362  0.92300 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  3.56353    0.36014   9.895 1.85e-13 ***
X           -0.17883    0.02478  -7.216 2.48e-09 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.322 on 51 degrees of freedom
Multiple R-squared:  0.5052,    Adjusted R-squared:  0.4955 
F-statistic: 52.07 on 1 and 51 DF,  p-value: 2.48e-09
anova(model2)
Analysis of Variance Table

Response: Y
          Df Sum Sq Mean Sq F value    Pr(>F)    
X          1 5.3993  5.3993  67.150 8.334e-11 ***
Xsq        1 1.2677  1.2677  15.766 0.0002297 ***
Residuals 50 4.0204  0.0804                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
summary(model2)

Call:
lm(formula = Y ~ X + Xsq)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.32871 -0.19718 -0.06290  0.04647  0.82851 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 15.33706    2.98204   5.143 4.53e-06 ***
X           -1.89493    0.43275  -4.379 6.09e-05 ***
Xsq          0.06145    0.01547   3.971  0.00023 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.2836 on 50 degrees of freedom
Multiple R-squared:  0.6238,    Adjusted R-squared:  0.6088 
F-statistic: 41.46 on 2 and 50 DF,  p-value: 2.426e-11
anova(model3)
Analysis of Variance Table

Response: Y
          Df Sum Sq Mean Sq F value    Pr(>F)    
X          1 5.3993  5.3993 72.2337  3.33e-11 ***
Xsq        1 1.2677  1.2677 16.9599 0.0001462 ***
Xcub       1 0.3577  0.3577  4.7856 0.0334994 *  
Residuals 49 3.6627  0.0747                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
summary(model3)

Call:
lm(formula = Y ~ X + Xsq + Xcub)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.35197 -0.15505 -0.05562  0.04544  0.83225 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)  73.6600    26.8153   2.747  0.00839 **
X           -14.7186     5.8768  -2.505  0.01564 * 
Xsq           0.9921     0.4257   2.331  0.02393 * 
Xcub         -0.0223     0.0102  -2.188  0.03350 * 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.2734 on 49 degrees of freedom
Multiple R-squared:  0.6573,    Adjusted R-squared:  0.6363 
F-statistic: 31.33 on 3 and 49 DF,  p-value: 1.873e-11
abline(model1, col="red")
XV<-seq(min(X),max(X),0.01)
yv<-predict(model2,list(X=XV,Xsq=XV^2))
lines(XV,yv,col="blue")

NA
NA

Fit a polynomial regression model

```{r}

HchronPp1

X<-HchronPp1\(Pmean # Y<-HchronPp1\)slope

Xsq<-X^2

Xcub<-X^3

plot(X,Y, pch=19)

model1<-lm(Y~X)

model2<-lm(Y~X+Xsq)

model3<-lm(Y~X+Xsq+Xcub)

mod_lm <-lm(Y~X(X<14.2)+X(X>=14.2),data=HchronPp1)

anova(model1)

summary(model1)

anova(model2)

summary(model2)

anova(model3)

summary(model3)

abline(model1, col=“red”)

XV<-seq(min(HchronPp1\(Pmean),max(HchronPp1\)Pmean),0.01)

yv<-predict(model2,list(X=XV,Xsq=XV^2))

lines(XV,yv,col=“blue”)

title(xlab=“Mean photoperiod (h)”,ylab=“Heightchron (mm/cd )”)

Define stats function

  • Using Gauch et al. 2003 (Model evaluation by comparison of model-based predictions and measured values. Agron. J. 95, 1442-1446)

Test stats functions used

s <- c(4231.972,3935.604,3779.652,3627.687,3363.499,3230.566,2868.114,2868.827)
m <- c(4987.66,5636.09,4754.06,4114.53,4141.72,3704.06,5142.19,4762.03)
x <- gauchStats(s,m)
tempDf <- data.frame(statName=c("SB","NU","LC","r_MSD","R2"), statValue=x)
 kable(tempDf, digits= 4)

statName statValue
SB 76.5
NU 5.2
LC 18.2
r_MSD 99.9
R2 7.1

tempDf2 <- data.frame(Predicted=s, Observed=m)
x <- tempDf2 %>%
  summarise(
    n = n(),
    r2 = gauchStats(Predicted,Observed)[5],
  #  rmse = round(rmse(Predicted,Observed),0),
    r_rmse = round(rmse(Predicted,Observed)/mean(Observed)*100,1),
    nse =format(NSE(Predicted,Observed), digits=3),
    sb = gauchStats(Predicted,Observed)[1],
  nu = gauchStats(Predicted,Observed)[2],
  lc = gauchStats(Predicted,Observed)[3]
  ) %>% 
  t() 
df <- data.frame(stat = row.names(x),statvalue = x[,1])
df %>%
  kable(format = "markdown",digits = 4)

stat statvalue
n n 8
r2 r2 7.1
r_rmse r_rmse 28.7
nse nse -4.1
sb sb 76.5
nu nu 5.2
lc lc 18.2

#format(coef(m)[2], digits = 2)

Load simulated database

create function to read data (Justin’s script)

load address of db

set table to be enquierd

load table into an object

make it a dataframe

change date to corerct format

explore the df

db.address <- "D:\\APSIMX2\\Prototypes\\Lucerne\\LucerneValidation.db"
tableName<-"Report"
DbTable <- GetApsimNGTable(db.address,tableName)
df <- as.data.frame(DbTable)
df$Clock.Today <- ymd_hms(df$Clock.Today)
str(df)
'data.frame':   90533 obs. of  181 variables:
 $ CheckpointID                                       : int  1 1 1 1 1 1 1 1 1 1 ...
 $ SimulationID                                       : int  2 3 2 1 1 2 1 3 2 1 ...
 $ Defoliation                                        : chr  NA NA NA NA ...
 $ Zone                                               : chr  "paddock" "paddock" "paddock" "paddock" ...
 $ Clock.Today                                        : POSIXct, format: "1996-10-31 12:00:00" "2000-10-24 12:00:00" "1996-11-01 12:00:00" ...
 $ DiagnosticsVariables.Script.AccumPlantN            : num  0 0 0 0 0 0 0 0 0 0 ...
 $ DiagnosticsVariables.Script.AccumMineralisation    : num  0 0 -0.00561 0 -0.00561 ...
 $ DiagnosticsVariables.Script.AccumDenit             : num  0 0 -0.184 0 -0.184 ...
 $ DiagnosticsVariables.Script.AccumFert              : num  0 0 0 0 0 0 0 0 0 0 ...
 $ DiagnosticsVariables.Script.AccumLeach             : num  0 0 0 0 0 0 0 0 0 0 ...
 $ DiagnosticsVariables.Script.AccumDetach            : num  0 0 0 0 0 0 0 0 0 0 ...
 $ DiagnosticsVariables.Script.DeltaSoilOMN           : num  0 0 0.00561 0 0.00561 ...
 $ DiagnosticsVariables.Script.DeltaSurfaceOMN        : num  0 0 0 0 0 0 0 0 0 0 ...
 $ DiagnosticsVariables.Script.DeltaSoilMineralN      : num  0 0 -0.189 0 -0.189 ...
 $ Lucerne.Root.NSupply.Fixation                      : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Lucerne.Root.NSupply.Reallocation                  : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Lucerne.Root.NSupply.Retranslocation               : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Lucerne.Root.NSupply.Uptake                        : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Soil.SoilWater.Eo                                  : num  1.89 3.01 4.13 1.89 4.13 ...
 $ Soil.SoilWater.Es                                  : num  1.89 3.01 4.13 1.89 4.13 ...
 $ SWC                                                : num  752 754 749 752 749 ...
 $ DiagnosticsVariables.Script.DUL                    : num  744 755 744 744 744 744 744 755 744 744 ...
 $ Soil.SoilWater.Drainage                            : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Soil.SoilWater.Runoff                              : num  0 0 0 0 0 0 0 0 0 0 ...
 $ DiagnosticsVariables.Script.OutFlowLat             : num  0 0 0 0 0 0 0 0 0 0 ...
 $ DiagnosticsVariables.Script.AccumEO                : num  -1.89 -3.01 -6.02 -1.89 -6.02 ...
 $ DiagnosticsVariables.Script.AccumEP                : num  0 0 0 0 0 0 0 0 0 0 ...
 $ DiagnosticsVariables.Script.AccumES                : num  -1.89 -3.01 -6.02 -1.89 -6.02 ...
 $ DiagnosticsVariables.Script.AccumDrainage          : num  0 0 0 0 0 0 0 0 0 0 ...
 $ DiagnosticsVariables.Script.AccumRunoff            : num  0 0 0 0 0 0 0 0 0 0 ...
 $ DiagnosticsVariables.Script.AccumRainfall          : num  10.4 1.6 12.2 10.4 12.2 ...
 $ DiagnosticsVariables.Script.AccumIrrigation        : num  0 0 0 0 0 0 0 0 0 0 ...
 $ DiagnosticsVariables.Script.AccumOutflowLat        : num  0 0 0 0 0 0 0 0 0 0 ...
 $ DiagnosticsVariables.Script.SoilWaterDeficit       : num  0 0 7.63 0 7.63 ...
 $ Lucerne.Grain.Live.Wt                              : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Lucerne.Shell.Live.Wt                              : num  0 0 0 0 0 0 0 0 0 0 ...
 $ StemWt                                             : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Lucerne.Stem.Live.Wt                               : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Lucerne.Grain.Live.N                               : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Lucerne.Shell.Live.N                               : num  0 0 0 0 0 0 0 0 0 0 ...
 $ LeafWt                                             : num  0 0 0 0 0 0 0 0 0 0 ...
 $ RootWt                                             : num  0 0 0 0 0 0 0 0 0 0 ...
 $ RootTotal                                          : num  0 0 0 0 0 0 0 0 0 0 ...
 $ TapRoot                                            : num  0 0 0 0 0 0 0 0 0 0 ...
 $ lucerne.TapRoot.Senesced.Wt                        : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Lucerne.Leaf.Live.N                                : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Lucerne.Root.Live.N                                : num  0 0.2 0 0 0 0.9 0.9 0.2 0.9 0.9 ...
 $ Lucerne.Leaf.Live.NConc                            : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Lucerne.Root.Live.NConc                            : num  0 0.01 0 0 0 0.01 0.01 0.01 0.01 0.01 ...
 $ Lucerne.Root.WaterUptake                           : num  0 0 0 0 0 0 0 0 0 0 ...
 $ ET                                                 : num  1.89 3.01 4.13 1.89 4.13 ...
 $ Lucerne.Root.Depth                                 : num  0 20 0 0 0 20 20 23 23 23 ...
 $ Lucerne.Root.MaintenanceRespiration                : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Lucerne.Leaf.CoverTotal                            : num  0 0 0 0 0 0 0 0 0 0 ...
 $ NodeNumber                                         : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Lucerne.Leaf.CoverDead                             : num  0 0 0 0 0 0 0 0 0 0 ...
 $ LAI                                                : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Height                                             : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Lucerne.Leaf.HeightFunction.DeltaHeight.Value..    : num  0 0 0 0 0 0 0 0 0 0 ...
 $ SWmm.1.                                            : num  35 33.9 33.6 35 33.6 ...
 $ SWmm.2.                                            : num  35.8 34.1 33.8 35.8 33.8 ...
 $ SWmm.3.                                            : num  35.1 35.2 33.9 35.1 33.9 ...
 $ SWmm.4.                                            : num  30.3 29.1 30.3 30.3 30.3 ...
 $ SWmm.5.                                            : num  28.4 27.1 28.4 28.4 28.4 ...
 $ SWmm.6.                                            : num  30.8 27 30.8 30.8 30.8 ...
 $ SWmm.7.                                            : num  32.4 29 32.4 32.4 32.4 ...
 $ SWmm.8.                                            : num  33.4 30 33.4 33.4 33.4 ...
 $ SWmm.9.                                            : num  33.6 31.5 33.6 33.6 33.6 ...
 $ SWmm.10.                                           : num  34.5 32 34.5 34.5 34.5 ...
 $ SWmm.11.                                           : num  34.5 32 34.5 34.5 34.5 ...
 $ SWmm.12.                                           : num  34.5 30.7 34.5 34.5 34.5 ...
 $ SWmm.13.                                           : num  34.5 28 34.5 34.5 34.5 ...
 $ SWmm.14.                                           : num  33.9 30 33.9 33.9 33.9 ...
 $ SWmm.15.                                           : num  33.6 34 33.9 33.6 33.9 ...
 $ SWmm.16.                                           : num  32.7 34 34 32.7 34 ...
 $ SWmm.17.                                           : num  30 35 30.6 30 30.6 ...
 $ SWmm.18.                                           : num  30 37 30 30 30 ...
 $ SWmm.19.                                           : num  30 37 30 30 30 30 30 37 30 30 ...
 $ SWmm.20.                                           : num  30.9 37 30.9 30.9 30.9 ...
 $ SWmm.21.                                           : num  31 37 31 31 31 31 31 37 31 31 ...
 $ SWmm.22.                                           : num  32 37 32 32 32 32 32 37 32 32 ...
 $ SWmm.23.                                           : num  34.9 36 34.9 34.9 34.9 ...
 $ Soil.NO3N.1.                                       : num  175 213 173 175 173 ...
 $ Soil.NO3N.2.                                       : num  47.2 19.2 47.8 47.2 47.8 ...
 $ Soil.NO3N.3.                                       : num  22.2 15.2 22.1 22.2 22.1 ...
 $ Soil.NO3N.4.                                       : num  4.05 1.76 5.12 4.05 5.12 ...
 $ Soil.NO3N.5.                                       : num  1.95 1.66 2.15 1.95 2.15 ...
 $ Soil.NO3N.6.                                       : num  1.67 1.66 1.71 1.67 1.71 ...
 $ Soil.NO3N.7.                                       : num  1.64 1.66 1.64 1.64 1.64 ...
 $ Soil.NO3N.8.                                       : num  1.6 1.66 1.6 1.6 1.6 ...
 $ Soil.NO3N.9.                                       : num  1.64 1.66 1.63 1.64 1.63 ...
 $ Soil.NO3N.10.                                      : num  0.186728 0.000394 0.274397 0.186728 0.274397 ...
 $ Soil.NO3N.11.                                      : num  1.61e-02 2.54e-05 2.91e-02 1.61e-02 2.91e-02 ...
 $ Soil.NO3N.12.                                      : num  3.02e-04 2.44e-05 3.00e-04 3.02e-04 3.00e-04 ...
 $ Soil.NO3N.13.                                      : num  1.44e-04 2.35e-05 2.78e-04 1.44e-04 2.78e-04 ...
 $ Soil.NO3N.14.                                      : num  2.25e-05 2.26e-05 4.98e-05 2.25e-05 4.98e-05 ...
 $ Soil.NO3N.15.                                      : num  1.50e-05 2.19e-05 2.88e-05 1.50e-05 2.88e-05 ...
 $ Soil.NO3N.16.                                      : num  1.6 1.63 1.56 1.6 1.56 ...
 $ Soil.NO3N.17.                                      : num  1.6 1.63 1.65 1.6 1.65 ...
  [list output truncated]
summary(df)
  CheckpointID  SimulationID    Defoliation            Zone            Clock.Today                 
 Min.   :1     Min.   :  1.00   Length:90533       Length:90533       Min.   :1996-10-31 12:00:00  
 1st Qu.:1     1st Qu.: 35.00   Class :character   Class :character   1st Qu.:2000-09-14 12:00:00  
 Median :1     Median : 79.00   Mode  :character   Mode  :character   Median :2001-12-17 12:00:00  
 Mean   :1     Mean   : 64.44                                         Mean   :2003-12-06 04:37:33  
 3rd Qu.:1     3rd Qu.: 94.00                                         3rd Qu.:2004-04-19 12:00:00  
 DiagnosticsVariables.Script.AccumPlantN DiagnosticsVariables.Script.AccumMineralisation
 Min.   :  0.0                           Min.   : -0.0216                               
 1st Qu.:298.7                           1st Qu.: 61.8094                               
 Median :372.9                           Median :141.5701                               
 Mean   :342.3                           Mean   :149.0996                               
 3rd Qu.:440.7                           3rd Qu.:226.8981                               
 DiagnosticsVariables.Script.AccumDenit DiagnosticsVariables.Script.AccumFert
 Min.   :-121.699                       Min.   :0                            
 1st Qu.: -23.301                       1st Qu.:0                            
 Median : -12.258                       Median :0                            
 Mean   : -16.538                       Mean   :0                            
 3rd Qu.:  -4.309                       3rd Qu.:0                            
 DiagnosticsVariables.Script.AccumLeach DiagnosticsVariables.Script.AccumDetach
 Min.   :-34.30667                      Min.   :0                              
 1st Qu.: -3.07642                      1st Qu.:0                              
 Median : -0.72422                      Median :0                              
 Mean   : -2.49944                      Mean   :0                              
 3rd Qu.: -0.08255                      3rd Qu.:0                              
 DiagnosticsVariables.Script.DeltaSoilOMN DiagnosticsVariables.Script.DeltaSurfaceOMN
 Min.   :-390.7620                        Min.   :0                                  
 1st Qu.:-226.8981                        1st Qu.:0                                  
 Median :-141.5701                        Median :0                                  
 Mean   :-149.0996                        Mean   :0                                  
 3rd Qu.: -61.8094                        3rd Qu.:0                                  
 DiagnosticsVariables.Script.DeltaSoilMineralN Lucerne.Root.NSupply.Fixation
 Min.   :-260.056                              Min.   :0                    
 1st Qu.:-253.758                              1st Qu.:0                    
 Median :-249.031                              Median :0                    
 Mean   :-212.257                              Mean   :0                    
 3rd Qu.:-207.192                              3rd Qu.:0                    
 Lucerne.Root.NSupply.Reallocation Lucerne.Root.NSupply.Retranslocation Lucerne.Root.NSupply.Uptake
 Min.   :0                         Min.   :0                            Min.   :0                  
 1st Qu.:0                         1st Qu.:0                            1st Qu.:0                  
 Median :0                         Median :0                            Median :0                  
 Mean   :0                         Mean   :0                            Mean   :0                  
 3rd Qu.:0                         3rd Qu.:0                            3rd Qu.:0                  
 Soil.SoilWater.Eo Soil.SoilWater.Es      SWC        DiagnosticsVariables.Script.DUL Soil.SoilWater.Drainage
 Min.   :0.05417   Min.   :0.0000    Min.   :199.0   Min.   :306.8                   Min.   : 0.0000        
 1st Qu.:1.10188   1st Qu.:0.3064    1st Qu.:564.3   1st Qu.:723.0                   1st Qu.: 0.0000        
 Median :2.25177   Median :0.5258    Median :685.1   Median :744.0                   Median : 0.0000        
 Mean   :2.68944   Mean   :0.7450    Mean   :632.0   Mean   :719.9                   Mean   : 0.2263        
 3rd Qu.:4.04160   3rd Qu.:0.8944    3rd Qu.:741.7   3rd Qu.:744.0                   3rd Qu.: 0.0000        
 Soil.SoilWater.Runoff DiagnosticsVariables.Script.OutFlowLat DiagnosticsVariables.Script.AccumEO
 Min.   : 0.000000     Min.   :0                              Min.   :-5465.649                  
 1st Qu.: 0.000000     1st Qu.:0                              1st Qu.:-2886.325                  
 Median : 0.000000     Median :0                              Median :-1706.367                  
 Mean   : 0.000998     Mean   :0                              Mean   :-1979.696                  
 3rd Qu.: 0.000000     3rd Qu.:0                              3rd Qu.: -797.595                  
 DiagnosticsVariables.Script.AccumEP DiagnosticsVariables.Script.AccumES
 Min.   :-2948.7                     Min.   :-1946.2489                 
 1st Qu.:-1236.4                     1st Qu.: -763.4817                 
 Median : -758.8                     Median : -456.5636                 
 Mean   : -804.8                     Mean   : -541.6276                 
 3rd Qu.: -269.5                     3rd Qu.: -232.5409                 
 DiagnosticsVariables.Script.AccumDrainage DiagnosticsVariables.Script.AccumRunoff
 Min.   :-1043.392                         Min.   :-14.0933                       
 1st Qu.: -274.840                         1st Qu.:  0.0000                       
 Median :  -18.261                         Median :  0.0000                       
 Mean   : -141.983                         Mean   : -0.2866                       
 3rd Qu.:   -5.561                         3rd Qu.:  0.0000                       
 DiagnosticsVariables.Script.AccumRainfall DiagnosticsVariables.Script.AccumIrrigation
 Min.   :   0.0                            Min.   :0                                  
 1st Qu.: 314.0                            1st Qu.:0                                  
 Median : 844.5                            Median :0                                  
 Mean   : 983.2                            Mean   :0                                  
 3rd Qu.:1551.6                            3rd Qu.:0                                  
 DiagnosticsVariables.Script.AccumOutflowLat DiagnosticsVariables.Script.SoilWaterDeficit
 Min.   :0                                   Min.   :-464.015                            
 1st Qu.:0                                   1st Qu.:-145.673                            
 Median :0                                   Median : -41.094                            
 Mean   :0                                   Mean   : -87.808                            
 3rd Qu.:0                                   3rd Qu.:   8.027                            
 Lucerne.Grain.Live.Wt Lucerne.Shell.Live.Wt     StemWt        Lucerne.Stem.Live.Wt Lucerne.Grain.Live.N
 Min.   : 0.000        Min.   : 0.000        Min.   :    0.0   Min.   :   0.00      Min.   :0.0000      
 1st Qu.: 0.000        1st Qu.: 0.000        1st Qu.:  169.4   1st Qu.:  16.94      1st Qu.:0.0000      
 Median : 0.000        Median : 0.000        Median :  834.7   Median :  83.47      Median :0.0000      
 Mean   : 6.184        Mean   : 6.184        Mean   : 6315.7   Mean   : 631.57      Mean   :0.1855      
 3rd Qu.: 0.000        3rd Qu.: 0.000        3rd Qu.: 6737.1   3rd Qu.: 673.71      3rd Qu.:0.0000      
 Lucerne.Shell.Live.N     LeafWt           RootWt       RootTotal        TapRoot     
 Min.   :0.0000       Min.   :   0.0   Min.   :   0   Min.   :    0   Min.   :    0  
 1st Qu.:0.0000       1st Qu.: 329.7   1st Qu.:1101   1st Qu.: 5622   1st Qu.: 5622  
 Median :0.0000       Median :1001.4   Median :1323   Median :13962   Median :13962  
 Mean   :0.1855       Mean   :1584.0   Mean   :1379   Mean   :15000   Mean   :15000  
 3rd Qu.:0.0000       3rd Qu.:2974.3   3rd Qu.:1679   3rd Qu.:22685   3rd Qu.:22685  
 lucerne.TapRoot.Senesced.Wt Lucerne.Leaf.Live.N Lucerne.Root.Live.N Lucerne.Leaf.Live.NConc
 Min.   : 0.00000            Min.   :0.00e+00    Min.   : 0.000      Min.   :0.000e+00      
 1st Qu.: 0.01372            1st Qu.:0.00e+00    1st Qu.: 2.532      1st Qu.:0.000e+00      
 Median : 0.27322            Median :0.00e+00    Median : 5.586      Median :0.000e+00      
 Mean   : 1.74374            Mean   :5.45e-05    Mean   : 5.760      Mean   :2.326e-05      
 3rd Qu.: 3.15073            3rd Qu.:5.00e-09    3rd Qu.: 8.757      3rd Qu.:0.000e+00      
 Lucerne.Root.Live.NConc Lucerne.Root.WaterUptake       ET          Lucerne.Root.Depth
 Min.   :0.000000        Min.   :0.00000          Min.   : 0.0000   Min.   :   0      
 1st Qu.:0.009987        1st Qu.:0.06868          1st Qu.: 0.8219   1st Qu.:2300      
 Median :0.009997        Median :0.52538          Median : 1.8017   Median :2300      
 Mean   :0.009984        Mean   :1.04966          Mean   : 2.2434   Mean   :2093      
 3rd Qu.:0.010000        3rd Qu.:1.63540          3rd Qu.: 3.3121   3rd Qu.:2300      
 Lucerne.Root.MaintenanceRespiration Lucerne.Leaf.CoverTotal   NodeNumber     Lucerne.Leaf.CoverDead
 Min.   :0                           Min.   :0.0000          Min.   : 0.000   Min.   :0             
 1st Qu.:0                           1st Qu.:0.1696          1st Qu.: 3.247   1st Qu.:0             
 Median :0                           Median :0.7459          Median : 7.685   Median :0             
 Mean   :0                           Mean   :0.5988          Mean   :13.592   Mean   :0             
 3rd Qu.:0                           3rd Qu.:0.9673          3rd Qu.:20.454   3rd Qu.:0             
      LAI             Height        Lucerne.Leaf.HeightFunction.DeltaHeight.Value..    SWmm.1.     
 Min.   : 0.000   Min.   :   0.00   Min.   : 0.0000                                 Min.   : 5.00  
 1st Qu.: 1.196   1st Qu.:  98.81   1st Qu.: 0.7509                                 1st Qu.:23.80  
 Median : 3.233   Median : 287.05   Median : 3.3655                                 Median :29.67  
 Mean   : 7.953   Mean   : 405.77   Mean   : 6.2440                                 Mean   :27.89  
 3rd Qu.:11.146   3rd Qu.: 660.58   3rd Qu.:10.8303                                 3rd Qu.:33.54  
    SWmm.2.         SWmm.3.          SWmm.4.         SWmm.5.          SWmm.6.          SWmm.7.      
 Min.   : 7.84   Min.   : 8.175   Min.   : 7.79   Min.   : 7.338   Min.   : 7.281   Min.   : 7.219  
 1st Qu.:26.85   1st Qu.:24.177   1st Qu.:23.84   1st Qu.:24.374   1st Qu.:24.060   1st Qu.:20.677  
 Median :31.61   Median :25.669   Median :25.50   Median :27.000   Median :28.827   Median :25.149  
 Mean   :29.05   Mean   :26.093   Mean   :24.74   Mean   :24.684   Mean   :25.584   Mean   :24.129  
 3rd Qu.:33.30   3rd Qu.:31.061   3rd Qu.:28.92   3rd Qu.:27.958   3rd Qu.:29.696   3rd Qu.:29.684  
    SWmm.8.         SWmm.9.         SWmm.10.         SWmm.11.        SWmm.12.        SWmm.13.    
 Min.   : 7.33   Min.   : 7.22   Min.   : 7.303   Min.   : 7.59   Min.   : 8.58   Min.   : 8.68  
 1st Qu.:19.82   1st Qu.:19.61   1st Qu.:20.850   1st Qu.:21.51   1st Qu.:22.77   1st Qu.:22.78  
 Median :27.70   Median :28.29   Median :29.343   Median :29.77   Median :30.43   Median :28.50  
 Mean   :24.87   Mean   :25.13   Mean   :26.038   Mean   :26.45   Mean   :27.46   Mean   :26.86  
 3rd Qu.:30.56   3rd Qu.:31.48   3rd Qu.:32.208   3rd Qu.:32.73   3rd Qu.:34.00   3rd Qu.:32.55  
    SWmm.14.        SWmm.15.        SWmm.16.        SWmm.17.        SWmm.18.        SWmm.19.    
 Min.   : 9.10   Min.   :10.00   Min.   :10.23   Min.   : 9.83   Min.   : 9.78   Min.   : 9.72  
 1st Qu.:22.79   1st Qu.:23.05   1st Qu.:24.04   1st Qu.:25.31   1st Qu.:25.33   1st Qu.:25.38  
 Median :29.96   Median :31.92   Median :31.88   Median :31.11   Median :32.10   Median :32.72  
 Mean   :27.34   Mean   :28.21   Mean   :29.09   Mean   :29.40   Mean   :29.72   Mean   :29.95  
 3rd Qu.:33.22   3rd Qu.:33.82   3rd Qu.:34.56   3rd Qu.:34.73   3rd Qu.:35.03   3rd Qu.:35.34  
    SWmm.20.        SWmm.21.        SWmm.22.        SWmm.23.      Soil.NO3N.1.        Soil.NO3N.2.    
 Min.   : 9.99   Min.   :10.18   Min.   :10.69   Min.   :15.00   Min.   :  0.06101   Min.   : 0.1313  
 1st Qu.:25.49   1st Qu.:25.02   1st Qu.:24.46   1st Qu.:26.61   1st Qu.:  1.03862   1st Qu.: 1.1728  
 Median :32.67   Median :32.53   Median :32.14   Median :33.01   Median :  1.87129   Median : 1.8805  
 Mean   :29.99   Mean   :29.86   Mean   :29.47   Mean   :31.23   Mean   : 13.67401   Mean   : 6.1749  
 3rd Qu.:35.30   3rd Qu.:35.33   3rd Qu.:36.05   3rd Qu.:37.99   3rd Qu.:  3.94112   3rd Qu.: 3.3014  
  Soil.NO3N.3.      Soil.NO3N.4.      Soil.NO3N.5.      Soil.NO3N.6.      Soil.NO3N.7.      Soil.NO3N.8.    
 Min.   : 0.2325   Min.   : 0.2878   Min.   : 0.3613   Min.   : 0.4462   Min.   : 0.4283   Min.   : 0.4359  
 1st Qu.: 1.2489   1st Qu.: 1.0427   1st Qu.: 1.0431   1st Qu.: 1.1018   1st Qu.: 0.9369   1st Qu.: 0.9356  
 Median : 1.9019   Median : 1.4751   Median : 1.4946   Median : 1.5757   Median : 1.2619   Median : 1.2107  
 Mean   : 5.0802   Mean   : 3.2502   Mean   : 2.6906   Mean   : 2.4727   Mean   : 2.0228   Mean   : 1.9079  
 3rd Qu.: 3.6036   3rd Qu.: 2.6235   3rd Qu.: 2.4400   3rd Qu.: 2.4894   3rd Qu.: 1.9566   3rd Qu.: 1.8009  
  Soil.NO3N.9.     Soil.NO3N.10.       Soil.NO3N.11.       Soil.NO3N.12.       Soil.NO3N.13.      
 Min.   : 0.3155   Min.   : 0.000001   Min.   : 0.000001   Min.   : 0.000002   Min.   : 0.000002  
 1st Qu.: 0.8903   1st Qu.: 0.622100   1st Qu.: 0.488031   1st Qu.: 0.446598   1st Qu.: 0.379448  
 Median : 1.1076   Median : 0.775539   Median : 0.680991   Median : 0.609676   Median : 0.539652  
 Mean   : 1.7549   Mean   : 1.366729   Mean   : 1.189142   Mean   : 1.075397   Mean   : 0.983475  
 3rd Qu.: 1.6339   3rd Qu.: 1.141636   3rd Qu.: 0.990307   3rd Qu.: 0.875613   3rd Qu.: 0.777594  
 Soil.NO3N.14.      Soil.NO3N.15.      Soil.NO3N.16.     Soil.NO3N.17.    Soil.NO3N.18.    Soil.NO3N.19.    
 Min.   :0.000002   Min.   :0.000002   Min.   :0.06765   Min.   :0.1333   Min.   :0.0975   Min.   :0.07629  
 1st Qu.:0.315068   1st Qu.:0.310278   1st Qu.:0.38640   1st Qu.:0.3444   1st Qu.:0.3133   1st Qu.:0.29036  
 Median :0.515182   Median :0.453778   Median :0.47428   Median :0.4320   Median :0.3975   Median :0.37335  
 Mean   :0.921146   Mean   :0.862362   Mean   :0.85440   Mean   :0.7970   Mean   :0.7356   Mean   :0.69518  
 3rd Qu.:0.737127   3rd Qu.:0.663963   3rd Qu.:0.79366   3rd Qu.:0.9047   3rd Qu.:0.8852   3rd Qu.:0.86161  
 Soil.NO3N.20.    Soil.NO3N.21.    Soil.NO3N.22.     Soil.NO3N.23.  
 Min.   :0.0975   Min.   :0.0975   Min.   :0.09492   Min.   :0.082  
 1st Qu.:0.2734   1st Qu.:0.2570   1st Qu.:0.25077   1st Qu.:0.243  
 Median :0.3609   Median :0.3660   Median :0.44842   Median :0.498  
 Mean   :0.6699   Mean   :0.6560   Mean   :0.67946   Mean   :0.736  
 3rd Qu.:0.8714   3rd Qu.:0.8949   3rd Qu.:0.94984   3rd Qu.:1.069  
 DiagnosticsVariables.Script.SoilNitrogenContent Lucerne.Arbitrator.N.TotalPlantDemand
 Min.   : 12.21                                  Min.   :0.00000                      
 1st Qu.: 18.45                                  1st Qu.:0.01242                      
 Median : 22.70                                  Median :0.10362                      
 Mean   : 53.39                                  Mean   :0.19978                      
 3rd Qu.: 55.95                                  3rd Qu.:0.32100                      
 DiagnosticsVariables.Script.FomN DiagnosticsVariables.Script.HumN DiagnosticsVariables.Script.BiomN
 Min.   : 0.08285                 Min.   :20076                    Min.   : 79.56                   
 1st Qu.: 0.55395                 1st Qu.:22764                    1st Qu.:106.18                   
 Median : 1.30829                 Median :22828                    Median :131.53                   
 Mean   : 3.96381                 Mean   :22724                    Mean   :132.07                   
 3rd Qu.: 4.18246                 3rd Qu.:22883                    3rd Qu.:160.53                   
 DiagnosticsVariables.Script.DltNMinRes DiagnosticsVariables.Script.DltNMinTot Lucerne.Leaf.Fw  
 Min.   :0                              Min.   :-0.02068                       Min.   :0.04677  
 1st Qu.:0                              1st Qu.: 0.09779                       1st Qu.:1.00000  
 Median :0                              Median : 0.17551                       Median :1.00000  
 Mean   :0                              Mean   : 0.19576                       Mean   :0.96421  
 3rd Qu.:0                              3rd Qu.: 0.27342                       3rd Qu.:1.00000  
 Lucerne.Leaf.Fn     Lucerne.Phenology.CurrentPhaseName Lucerne.Phenology.CurrentStageName
 Min.   :0.0000000   Length:90533                       Length:90533                      
 1st Qu.:0.0000000   Class :character                   Class :character                  
 Median :0.0000000   Mode  :character                   Mode  :character                  
 Mean   :0.0280805                                                                        
 3rd Qu.:0.0000002                                                                        
 Lucerne.Phenology.Stage Lucerne.Phenology.DaysAfterCutting.Value..
 Min.   :1.000           Min.   :  0                               
 1st Qu.:4.460           1st Qu.: 18                               
 Median :5.113           Median : 37                               
 Mean   :5.681           Mean   : 35                               
 3rd Qu.:6.434           3rd Qu.: 46                               
 Lucerne.Phenology.FloweringDaysAfterCutting.Value.. Lucerne.Pod.Wt   Lucerne.Pod.N     shootbiomass    
 Min.   :  0.00                                      Min.   :  0.00   Min.   :0.0000   Min.   :    0.0  
 1st Qu.:  0.00                                      1st Qu.:  0.00   1st Qu.:0.0000   1st Qu.:  498.1  
 Median :  0.00                                      Median :  0.00   Median :0.0000   Median : 1835.2  
 Mean   : 24.89                                      Mean   : 12.37   Mean   :0.3711   Mean   : 8023.4  
 3rd Qu.: 46.00                                      3rd Qu.:  0.00   3rd Qu.:0.0000   3rd Qu.: 9703.8  
 Lucerne.Leaf.LAIFunction.Value.. Lucerne.Root.LengthDensity.1. Lucerne.Root.LengthDensity.2.
 Min.   : 0.000                   Min.   :0.00000               Min.   :0.000000             
 1st Qu.: 1.196                   1st Qu.:0.02337               1st Qu.:0.006188             
 Median : 3.233                   Median :0.03911               Median :0.012742             
 Mean   : 7.953                   Mean   :0.03493               Mean   :0.016347             
 3rd Qu.:11.146                   3rd Qu.:0.04474               3rd Qu.:0.025018             
 Lucerne.Root.LengthDensity.3. Lucerne.Root.LengthDensity.4. Lucerne.Root.LengthDensity.5.
 Min.   :0.000000              Min.   :0.000000              Min.   :0.000000             
 1st Qu.:0.004121              1st Qu.:0.004006              1st Qu.:0.004412             
 Median :0.009291              Median :0.009005              Median :0.010116             
 Mean   :0.011332              Mean   :0.010697              Mean   :0.011553             
 3rd Qu.:0.017243              3rd Qu.:0.016578              3rd Qu.:0.018546             
 Lucerne.Root.LengthDensity.6. Lucerne.Root.LengthDensity.7. Lucerne.Root.LengthDensity.8.
 Min.   :0.000000              Min.   :0.000000              Min.   :0.00000              
 1st Qu.:0.004776              1st Qu.:0.004625              1st Qu.:0.00480              
 Median :0.012072              Median :0.011890              Median :0.01227              
 Mean   :0.013187              Mean   :0.012629              Mean   :0.01272              
 3rd Qu.:0.021161              3rd Qu.:0.020755              3rd Qu.:0.01969              
 Lucerne.Root.LengthDensity.9. Lucerne.Root.LengthDensity.10. Lucerne.Root.LengthDensity.11.
 Min.   :0.000000              Min.   :0.000000               Min.   :0.000000              
 1st Qu.:0.004333              1st Qu.:0.003947               1st Qu.:0.003698              
 Median :0.010792              Median :0.010234               Median :0.008700              
 Mean   :0.011317              Mean   :0.010436               Mean   :0.009641              
 3rd Qu.:0.016236              3rd Qu.:0.015302               3rd Qu.:0.014021              
 Lucerne.Root.LengthDensity.12. Lucerne.Root.LengthDensity.13. Lucerne.Root.LengthDensity.14.
 Min.   :0.000000               Min.   :0.000000               Min.   :0.000000              
 1st Qu.:0.003349               1st Qu.:0.003217               1st Qu.:0.003024              
 Median :0.008141               Median :0.007350               Median :0.007787              
 Mean   :0.008249               Mean   :0.008167               Mean   :0.008588              
 3rd Qu.:0.012517               3rd Qu.:0.011869               3rd Qu.:0.012847              
 Lucerne.Root.LengthDensity.15. Lucerne.Root.LengthDensity.16. Lucerne.Root.LengthDensity.17.
 Min.   :0.000000               Min.   :0.000000               Min.   :0.000000              
 1st Qu.:0.002521               1st Qu.:0.002326               1st Qu.:0.001922              
 Median :0.006279               Median :0.006056               Median :0.003525              
 Mean   :0.007103               Mean   :0.006403               Mean   :0.004863              
 3rd Qu.:0.010472               3rd Qu.:0.008907               3rd Qu.:0.006937              
 Lucerne.Root.LengthDensity.18. Lucerne.Root.LengthDensity.19. Lucerne.Root.LengthDensity.20.
 Min.   :0.000000               Min.   :0.000000               Min.   :0.000000              
 1st Qu.:0.001478               1st Qu.:0.001189               1st Qu.:0.001048              
 Median :0.003466               Median :0.003464               Median :0.003478              
 Mean   :0.004212               Mean   :0.003752               Mean   :0.003745              
 3rd Qu.:0.005825               3rd Qu.:0.005487               3rd Qu.:0.005406              
 Lucerne.Root.LengthDensity.21. Lucerne.Root.LengthDensity.22. Lucerne.Root.LengthDensity.23.
 Min.   :0.0000000              Min.   :0.000000               Min.   :0.000                 
 1st Qu.:0.0009944              1st Qu.:0.001057               1st Qu.:0.001                 
 Median :0.0042995              Median :0.006886               Median :0.008                 
 Mean   :0.0042554              Mean   :0.007607               Mean   :0.009                 
 3rd Qu.:0.0059690              3rd Qu.:0.011035               3rd Qu.:0.013                 
 Soil.SoilWater.WaterTable Lucerne.AboveGround.Wt Lucerne.AboveGround.N Soil.SoilWater.ESW.1.
 Min.   : 300              Min.   :   0.00        Min.   : 0.0000       Min.   : 0.00        
 1st Qu.: 600              1st Qu.:  49.81        1st Qu.: 0.5081       1st Qu.:16.12        
 Median :1910              Median : 183.52        Median : 2.5040       Median :22.02        
 Mean   :1535              Mean   : 802.34        Mean   :19.2180       Mean   :20.14        
 3rd Qu.:2300              3rd Qu.: 970.38        3rd Qu.:20.2114       3rd Qu.:25.93        
 Soil.SoilWater.ESW.2. Soil.SoilWater.ESW.3. Soil.SoilWater.ESW.4. Soil.SoilWater.ESW.5.
 Min.   : 0.04039      Min.   : 0.3954       Min.   : 0.1298       Min.   : 0.1083      
 1st Qu.:19.05110      1st Qu.:17.1772       1st Qu.:16.8361       1st Qu.:17.3740      
 Median :23.81350      Median :18.6692       Median :18.5024       Median :20.0000      
 Mean   :21.23478      Mean   :19.0617       Mean   :17.7148       Mean   :17.6743      
 3rd Qu.:25.50340      3rd Qu.:24.0606       3rd Qu.:21.9175       3rd Qu.:20.9585      
 Soil.SoilWater.ESW.6. Soil.SoilWater.ESW.7. Soil.SoilWater.ESW.8. Soil.SoilWater.ESW.9.
 Min.   : 0.02136      Min.   : 0.03887      Min.   : 0.00         Min.   : 0.00        
 1st Qu.:17.06030      1st Qu.:13.67662      1st Qu.:12.82         1st Qu.:12.61        
 Median :21.82681      Median :18.14935      Median :20.70         Median :21.29        
 Mean   :18.57358      Mean   :17.12142      Mean   :17.86         Mean   :18.12        
 3rd Qu.:22.69583      3rd Qu.:22.68353      3rd Qu.:23.56         3rd Qu.:24.48        
 Soil.SoilWater.ESW.10. Soil.SoilWater.ESW.11. Soil.SoilWater.ESW.12. Soil.SoilWater.ESW.13.
 Min.   : 0.02268       Min.   : 0.00          Min.   : 0.00          Min.   : 0.00         
 1st Qu.:13.85029       1st Qu.:14.51          1st Qu.:15.77          1st Qu.:14.78         
 Median :22.34308       Median :22.77          Median :23.43          Median :20.50         
 Mean   :19.02666       Mean   :19.42          Mean   :20.39          Mean   :18.84         
 3rd Qu.:25.20769       3rd Qu.:25.73          3rd Qu.:27.00          3rd Qu.:24.55         
 Soil.SoilWater.ESW.14. Soil.SoilWater.ESW.15. Soil.SoilWater.ESW.16. Soil.SoilWater.ESW.17.
 Min.   : 0.00          Min.   : 0.00          Min.   : 0.00          Min.   : 0.00         
 1st Qu.:14.79          1st Qu.:15.05          1st Qu.:15.04          1st Qu.:16.31         
 Median :21.96          Median :23.92          Median :22.88          Median :22.11         
 Mean   :19.30          Mean   :20.13          Mean   :20.04          Mean   :20.36         
 3rd Qu.:25.22          3rd Qu.:25.82          3rd Qu.:25.56          3rd Qu.:25.73         
 Soil.SoilWater.ESW.18. Soil.SoilWater.ESW.19. Soil.SoilWater.ESW.20. Soil.SoilWater.ESW.21.
 Min.   : 0.00          Min.   : 0.00          Min.   : 0.00          Min.   : 0.00         
 1st Qu.:16.33          1st Qu.:16.38          1st Qu.:17.42          1st Qu.:15.93         
 Median :23.10          Median :23.72          Median :24.60          Median :23.43         
 Mean   :20.69          Mean   :20.92          Mean   :21.80          Mean   :20.70         
 3rd Qu.:26.03          3rd Qu.:26.34          3rd Qu.:27.24          3rd Qu.:26.24         
 Soil.SoilWater.ESW.22. Soil.SoilWater.ESW.23. Lucerne.TapRoot.Live.StructuralWt
 Min.   : 0.00          Min.   : 6.00          Min.   :  0.0                    
 1st Qu.:15.24          1st Qu.:17.48          1st Qu.:100.2                    
 Median :23.04          Median :23.77          Median :123.6                    
 Mean   :20.29          Mean   :22.12          Mean   :129.8                    
 3rd Qu.:26.97          3rd Qu.:28.99          3rd Qu.:160.2                    
 Lucerne.TapRoot.Live.StorageWt    Water            SowingDate             FD                SD1           
 Min.   :  0.000                Length:90533       Length:90533       Length:90533       Length:90533      
 1st Qu.:  3.793                Class :character   Class :character   Class :character   Class :character  
 Median :  6.721                Mode  :character   Mode  :character   Mode  :character   Mode  :character  
 Mean   :  8.124                                                                                           
 3rd Qu.:  9.945                                                                                           
   Cutting               SS                 LL           
 Length:90533       Length:90533       Length:90533      
 Class :character   Class :character   Class :character  
 Mode  :character   Mode  :character   Mode  :character  
                                                         
                                                         
 [ reached getOption("max.print") -- omitted 2 rows ]
head(df) # simulation results

get sim names (different table)

merge names

remove unecessary variables

simNameDf <- as.data.frame (GetApsimNGTable(db.address,"_Simulations"))
myDb <- merge(df, simNameDf, by.x= c("SimulationID"), by.y= c("ID"))
#str(myDb)
head(myDb)
summary(myDb)
  SimulationID     CheckpointID Defoliation            Zone            Clock.Today                 
 Min.   :  1.00   Min.   :1     Length:90533       Length:90533       Min.   :1996-10-31 12:00:00  
 1st Qu.: 35.00   1st Qu.:1     Class :character   Class :character   1st Qu.:2000-09-14 12:00:00  
 Median : 79.00   Median :1     Mode  :character   Mode  :character   Median :2001-12-17 12:00:00  
 Mean   : 64.44   Mean   :1                                           Mean   :2003-12-06 04:37:33  
 3rd Qu.: 94.00   3rd Qu.:1                                           3rd Qu.:2004-04-19 12:00:00  
 DiagnosticsVariables.Script.AccumPlantN DiagnosticsVariables.Script.AccumMineralisation
 Min.   :  0.0                           Min.   : -0.0216                               
 1st Qu.:298.7                           1st Qu.: 61.8094                               
 Median :372.9                           Median :141.5701                               
 Mean   :342.3                           Mean   :149.0996                               
 3rd Qu.:440.7                           3rd Qu.:226.8981                               
 DiagnosticsVariables.Script.AccumDenit DiagnosticsVariables.Script.AccumFert
 Min.   :-121.699                       Min.   :0                            
 1st Qu.: -23.301                       1st Qu.:0                            
 Median : -12.258                       Median :0                            
 Mean   : -16.538                       Mean   :0                            
 3rd Qu.:  -4.309                       3rd Qu.:0                            
 DiagnosticsVariables.Script.AccumLeach DiagnosticsVariables.Script.AccumDetach
 Min.   :-34.30667                      Min.   :0                              
 1st Qu.: -3.07642                      1st Qu.:0                              
 Median : -0.72422                      Median :0                              
 Mean   : -2.49944                      Mean   :0                              
 3rd Qu.: -0.08255                      3rd Qu.:0                              
 DiagnosticsVariables.Script.DeltaSoilOMN DiagnosticsVariables.Script.DeltaSurfaceOMN
 Min.   :-390.7620                        Min.   :0                                  
 1st Qu.:-226.8981                        1st Qu.:0                                  
 Median :-141.5701                        Median :0                                  
 Mean   :-149.0996                        Mean   :0                                  
 3rd Qu.: -61.8094                        3rd Qu.:0                                  
 DiagnosticsVariables.Script.DeltaSoilMineralN Lucerne.Root.NSupply.Fixation
 Min.   :-260.056                              Min.   :0                    
 1st Qu.:-253.758                              1st Qu.:0                    
 Median :-249.031                              Median :0                    
 Mean   :-212.257                              Mean   :0                    
 3rd Qu.:-207.192                              3rd Qu.:0                    
 Lucerne.Root.NSupply.Reallocation Lucerne.Root.NSupply.Retranslocation Lucerne.Root.NSupply.Uptake
 Min.   :0                         Min.   :0                            Min.   :0                  
 1st Qu.:0                         1st Qu.:0                            1st Qu.:0                  
 Median :0                         Median :0                            Median :0                  
 Mean   :0                         Mean   :0                            Mean   :0                  
 3rd Qu.:0                         3rd Qu.:0                            3rd Qu.:0                  
 Soil.SoilWater.Eo Soil.SoilWater.Es      SWC        DiagnosticsVariables.Script.DUL Soil.SoilWater.Drainage
 Min.   :0.05417   Min.   :0.0000    Min.   :199.0   Min.   :306.8                   Min.   : 0.0000        
 1st Qu.:1.10188   1st Qu.:0.3064    1st Qu.:564.3   1st Qu.:723.0                   1st Qu.: 0.0000        
 Median :2.25177   Median :0.5258    Median :685.1   Median :744.0                   Median : 0.0000        
 Mean   :2.68944   Mean   :0.7450    Mean   :632.0   Mean   :719.9                   Mean   : 0.2263        
 3rd Qu.:4.04160   3rd Qu.:0.8944    3rd Qu.:741.7   3rd Qu.:744.0                   3rd Qu.: 0.0000        
 Soil.SoilWater.Runoff DiagnosticsVariables.Script.OutFlowLat DiagnosticsVariables.Script.AccumEO
 Min.   : 0.000000     Min.   :0                              Min.   :-5465.649                  
 1st Qu.: 0.000000     1st Qu.:0                              1st Qu.:-2886.325                  
 Median : 0.000000     Median :0                              Median :-1706.367                  
 Mean   : 0.000998     Mean   :0                              Mean   :-1979.696                  
 3rd Qu.: 0.000000     3rd Qu.:0                              3rd Qu.: -797.595                  
 DiagnosticsVariables.Script.AccumEP DiagnosticsVariables.Script.AccumES
 Min.   :-2948.7                     Min.   :-1946.2489                 
 1st Qu.:-1236.4                     1st Qu.: -763.4817                 
 Median : -758.8                     Median : -456.5636                 
 Mean   : -804.8                     Mean   : -541.6276                 
 3rd Qu.: -269.5                     3rd Qu.: -232.5409                 
 DiagnosticsVariables.Script.AccumDrainage DiagnosticsVariables.Script.AccumRunoff
 Min.   :-1043.392                         Min.   :-14.0933                       
 1st Qu.: -274.840                         1st Qu.:  0.0000                       
 Median :  -18.261                         Median :  0.0000                       
 Mean   : -141.983                         Mean   : -0.2866                       
 3rd Qu.:   -5.561                         3rd Qu.:  0.0000                       
 DiagnosticsVariables.Script.AccumRainfall DiagnosticsVariables.Script.AccumIrrigation
 Min.   :   0.0                            Min.   :0                                  
 1st Qu.: 314.0                            1st Qu.:0                                  
 Median : 844.5                            Median :0                                  
 Mean   : 983.2                            Mean   :0                                  
 3rd Qu.:1551.6                            3rd Qu.:0                                  
 DiagnosticsVariables.Script.AccumOutflowLat DiagnosticsVariables.Script.SoilWaterDeficit
 Min.   :0                                   Min.   :-464.015                            
 1st Qu.:0                                   1st Qu.:-145.673                            
 Median :0                                   Median : -41.094                            
 Mean   :0                                   Mean   : -87.808                            
 3rd Qu.:0                                   3rd Qu.:   8.027                            
 Lucerne.Grain.Live.Wt Lucerne.Shell.Live.Wt     StemWt        Lucerne.Stem.Live.Wt Lucerne.Grain.Live.N
 Min.   : 0.000        Min.   : 0.000        Min.   :    0.0   Min.   :   0.00      Min.   :0.0000      
 1st Qu.: 0.000        1st Qu.: 0.000        1st Qu.:  169.4   1st Qu.:  16.94      1st Qu.:0.0000      
 Median : 0.000        Median : 0.000        Median :  834.7   Median :  83.47      Median :0.0000      
 Mean   : 6.184        Mean   : 6.184        Mean   : 6315.7   Mean   : 631.57      Mean   :0.1855      
 3rd Qu.: 0.000        3rd Qu.: 0.000        3rd Qu.: 6737.1   3rd Qu.: 673.71      3rd Qu.:0.0000      
 Lucerne.Shell.Live.N     LeafWt           RootWt       RootTotal        TapRoot     
 Min.   :0.0000       Min.   :   0.0   Min.   :   0   Min.   :    0   Min.   :    0  
 1st Qu.:0.0000       1st Qu.: 329.7   1st Qu.:1101   1st Qu.: 5622   1st Qu.: 5622  
 Median :0.0000       Median :1001.4   Median :1323   Median :13962   Median :13962  
 Mean   :0.1855       Mean   :1584.0   Mean   :1379   Mean   :15000   Mean   :15000  
 3rd Qu.:0.0000       3rd Qu.:2974.3   3rd Qu.:1679   3rd Qu.:22685   3rd Qu.:22685  
 lucerne.TapRoot.Senesced.Wt Lucerne.Leaf.Live.N Lucerne.Root.Live.N Lucerne.Leaf.Live.NConc
 Min.   : 0.00000            Min.   :0.00e+00    Min.   : 0.000      Min.   :0.000e+00      
 1st Qu.: 0.01372            1st Qu.:0.00e+00    1st Qu.: 2.532      1st Qu.:0.000e+00      
 Median : 0.27322            Median :0.00e+00    Median : 5.586      Median :0.000e+00      
 Mean   : 1.74374            Mean   :5.45e-05    Mean   : 5.760      Mean   :2.326e-05      
 3rd Qu.: 3.15073            3rd Qu.:5.00e-09    3rd Qu.: 8.757      3rd Qu.:0.000e+00      
 Lucerne.Root.Live.NConc Lucerne.Root.WaterUptake       ET          Lucerne.Root.Depth
 Min.   :0.000000        Min.   :0.00000          Min.   : 0.0000   Min.   :   0      
 1st Qu.:0.009987        1st Qu.:0.06868          1st Qu.: 0.8219   1st Qu.:2300      
 Median :0.009997        Median :0.52538          Median : 1.8017   Median :2300      
 Mean   :0.009984        Mean   :1.04966          Mean   : 2.2434   Mean   :2093      
 3rd Qu.:0.010000        3rd Qu.:1.63540          3rd Qu.: 3.3121   3rd Qu.:2300      
 Lucerne.Root.MaintenanceRespiration Lucerne.Leaf.CoverTotal   NodeNumber     Lucerne.Leaf.CoverDead
 Min.   :0                           Min.   :0.0000          Min.   : 0.000   Min.   :0             
 1st Qu.:0                           1st Qu.:0.1696          1st Qu.: 3.247   1st Qu.:0             
 Median :0                           Median :0.7459          Median : 7.685   Median :0             
 Mean   :0                           Mean   :0.5988          Mean   :13.592   Mean   :0             
 3rd Qu.:0                           3rd Qu.:0.9673          3rd Qu.:20.454   3rd Qu.:0             
      LAI             Height        Lucerne.Leaf.HeightFunction.DeltaHeight.Value..    SWmm.1.     
 Min.   : 0.000   Min.   :   0.00   Min.   : 0.0000                                 Min.   : 5.00  
 1st Qu.: 1.196   1st Qu.:  98.81   1st Qu.: 0.7509                                 1st Qu.:23.80  
 Median : 3.233   Median : 287.05   Median : 3.3655                                 Median :29.67  
 Mean   : 7.953   Mean   : 405.77   Mean   : 6.2440                                 Mean   :27.89  
 3rd Qu.:11.146   3rd Qu.: 660.58   3rd Qu.:10.8303                                 3rd Qu.:33.54  
    SWmm.2.         SWmm.3.          SWmm.4.         SWmm.5.          SWmm.6.          SWmm.7.      
 Min.   : 7.84   Min.   : 8.175   Min.   : 7.79   Min.   : 7.338   Min.   : 7.281   Min.   : 7.219  
 1st Qu.:26.85   1st Qu.:24.177   1st Qu.:23.84   1st Qu.:24.374   1st Qu.:24.060   1st Qu.:20.677  
 Median :31.61   Median :25.669   Median :25.50   Median :27.000   Median :28.827   Median :25.149  
 Mean   :29.05   Mean   :26.093   Mean   :24.74   Mean   :24.684   Mean   :25.584   Mean   :24.129  
 3rd Qu.:33.30   3rd Qu.:31.061   3rd Qu.:28.92   3rd Qu.:27.958   3rd Qu.:29.696   3rd Qu.:29.684  
    SWmm.8.         SWmm.9.         SWmm.10.         SWmm.11.        SWmm.12.        SWmm.13.    
 Min.   : 7.33   Min.   : 7.22   Min.   : 7.303   Min.   : 7.59   Min.   : 8.58   Min.   : 8.68  
 1st Qu.:19.82   1st Qu.:19.61   1st Qu.:20.850   1st Qu.:21.51   1st Qu.:22.77   1st Qu.:22.78  
 Median :27.70   Median :28.29   Median :29.343   Median :29.77   Median :30.43   Median :28.50  
 Mean   :24.87   Mean   :25.13   Mean   :26.038   Mean   :26.45   Mean   :27.46   Mean   :26.86  
 3rd Qu.:30.56   3rd Qu.:31.48   3rd Qu.:32.208   3rd Qu.:32.73   3rd Qu.:34.00   3rd Qu.:32.55  
    SWmm.14.        SWmm.15.        SWmm.16.        SWmm.17.        SWmm.18.        SWmm.19.    
 Min.   : 9.10   Min.   :10.00   Min.   :10.23   Min.   : 9.83   Min.   : 9.78   Min.   : 9.72  
 1st Qu.:22.79   1st Qu.:23.05   1st Qu.:24.04   1st Qu.:25.31   1st Qu.:25.33   1st Qu.:25.38  
 Median :29.96   Median :31.92   Median :31.88   Median :31.11   Median :32.10   Median :32.72  
 Mean   :27.34   Mean   :28.21   Mean   :29.09   Mean   :29.40   Mean   :29.72   Mean   :29.95  
 3rd Qu.:33.22   3rd Qu.:33.82   3rd Qu.:34.56   3rd Qu.:34.73   3rd Qu.:35.03   3rd Qu.:35.34  
    SWmm.20.        SWmm.21.        SWmm.22.        SWmm.23.      Soil.NO3N.1.        Soil.NO3N.2.    
 Min.   : 9.99   Min.   :10.18   Min.   :10.69   Min.   :15.00   Min.   :  0.06101   Min.   : 0.1313  
 1st Qu.:25.49   1st Qu.:25.02   1st Qu.:24.46   1st Qu.:26.61   1st Qu.:  1.03862   1st Qu.: 1.1728  
 Median :32.67   Median :32.53   Median :32.14   Median :33.01   Median :  1.87129   Median : 1.8805  
 Mean   :29.99   Mean   :29.86   Mean   :29.47   Mean   :31.23   Mean   : 13.67401   Mean   : 6.1749  
 3rd Qu.:35.30   3rd Qu.:35.33   3rd Qu.:36.05   3rd Qu.:37.99   3rd Qu.:  3.94112   3rd Qu.: 3.3014  
  Soil.NO3N.3.      Soil.NO3N.4.      Soil.NO3N.5.      Soil.NO3N.6.      Soil.NO3N.7.      Soil.NO3N.8.    
 Min.   : 0.2325   Min.   : 0.2878   Min.   : 0.3613   Min.   : 0.4462   Min.   : 0.4283   Min.   : 0.4359  
 1st Qu.: 1.2489   1st Qu.: 1.0427   1st Qu.: 1.0431   1st Qu.: 1.1018   1st Qu.: 0.9369   1st Qu.: 0.9356  
 Median : 1.9019   Median : 1.4751   Median : 1.4946   Median : 1.5757   Median : 1.2619   Median : 1.2107  
 Mean   : 5.0802   Mean   : 3.2502   Mean   : 2.6906   Mean   : 2.4727   Mean   : 2.0228   Mean   : 1.9079  
 3rd Qu.: 3.6036   3rd Qu.: 2.6235   3rd Qu.: 2.4400   3rd Qu.: 2.4894   3rd Qu.: 1.9566   3rd Qu.: 1.8009  
  Soil.NO3N.9.     Soil.NO3N.10.       Soil.NO3N.11.       Soil.NO3N.12.       Soil.NO3N.13.      
 Min.   : 0.3155   Min.   : 0.000001   Min.   : 0.000001   Min.   : 0.000002   Min.   : 0.000002  
 1st Qu.: 0.8903   1st Qu.: 0.622100   1st Qu.: 0.488031   1st Qu.: 0.446598   1st Qu.: 0.379448  
 Median : 1.1076   Median : 0.775539   Median : 0.680991   Median : 0.609676   Median : 0.539652  
 Mean   : 1.7549   Mean   : 1.366729   Mean   : 1.189142   Mean   : 1.075397   Mean   : 0.983475  
 3rd Qu.: 1.6339   3rd Qu.: 1.141636   3rd Qu.: 0.990307   3rd Qu.: 0.875613   3rd Qu.: 0.777594  
 Soil.NO3N.14.      Soil.NO3N.15.      Soil.NO3N.16.     Soil.NO3N.17.    Soil.NO3N.18.    Soil.NO3N.19.    
 Min.   :0.000002   Min.   :0.000002   Min.   :0.06765   Min.   :0.1333   Min.   :0.0975   Min.   :0.07629  
 1st Qu.:0.315068   1st Qu.:0.310278   1st Qu.:0.38640   1st Qu.:0.3444   1st Qu.:0.3133   1st Qu.:0.29036  
 Median :0.515182   Median :0.453778   Median :0.47428   Median :0.4320   Median :0.3975   Median :0.37335  
 Mean   :0.921146   Mean   :0.862362   Mean   :0.85440   Mean   :0.7970   Mean   :0.7356   Mean   :0.69518  
 3rd Qu.:0.737127   3rd Qu.:0.663963   3rd Qu.:0.79366   3rd Qu.:0.9047   3rd Qu.:0.8852   3rd Qu.:0.86161  
 Soil.NO3N.20.    Soil.NO3N.21.    Soil.NO3N.22.     Soil.NO3N.23.  
 Min.   :0.0975   Min.   :0.0975   Min.   :0.09492   Min.   :0.082  
 1st Qu.:0.2734   1st Qu.:0.2570   1st Qu.:0.25077   1st Qu.:0.243  
 Median :0.3609   Median :0.3660   Median :0.44842   Median :0.498  
 Mean   :0.6699   Mean   :0.6560   Mean   :0.67946   Mean   :0.736  
 3rd Qu.:0.8714   3rd Qu.:0.8949   3rd Qu.:0.94984   3rd Qu.:1.069  
 DiagnosticsVariables.Script.SoilNitrogenContent Lucerne.Arbitrator.N.TotalPlantDemand
 Min.   : 12.21                                  Min.   :0.00000                      
 1st Qu.: 18.45                                  1st Qu.:0.01242                      
 Median : 22.70                                  Median :0.10362                      
 Mean   : 53.39                                  Mean   :0.19978                      
 3rd Qu.: 55.95                                  3rd Qu.:0.32100                      
 DiagnosticsVariables.Script.FomN DiagnosticsVariables.Script.HumN DiagnosticsVariables.Script.BiomN
 Min.   : 0.08285                 Min.   :20076                    Min.   : 79.56                   
 1st Qu.: 0.55395                 1st Qu.:22764                    1st Qu.:106.18                   
 Median : 1.30829                 Median :22828                    Median :131.53                   
 Mean   : 3.96381                 Mean   :22724                    Mean   :132.07                   
 3rd Qu.: 4.18246                 3rd Qu.:22883                    3rd Qu.:160.53                   
 DiagnosticsVariables.Script.DltNMinRes DiagnosticsVariables.Script.DltNMinTot Lucerne.Leaf.Fw  
 Min.   :0                              Min.   :-0.02068                       Min.   :0.04677  
 1st Qu.:0                              1st Qu.: 0.09779                       1st Qu.:1.00000  
 Median :0                              Median : 0.17551                       Median :1.00000  
 Mean   :0                              Mean   : 0.19576                       Mean   :0.96421  
 3rd Qu.:0                              3rd Qu.: 0.27342                       3rd Qu.:1.00000  
 Lucerne.Leaf.Fn     Lucerne.Phenology.CurrentPhaseName Lucerne.Phenology.CurrentStageName
 Min.   :0.0000000   Length:90533                       Length:90533                      
 1st Qu.:0.0000000   Class :character                   Class :character                  
 Median :0.0000000   Mode  :character                   Mode  :character                  
 Mean   :0.0280805                                                                        
 3rd Qu.:0.0000002                                                                        
 Lucerne.Phenology.Stage Lucerne.Phenology.DaysAfterCutting.Value..
 Min.   :1.000           Min.   :  0                               
 1st Qu.:4.460           1st Qu.: 18                               
 Median :5.113           Median : 37                               
 Mean   :5.681           Mean   : 35                               
 3rd Qu.:6.434           3rd Qu.: 46                               
 Lucerne.Phenology.FloweringDaysAfterCutting.Value.. Lucerne.Pod.Wt   Lucerne.Pod.N     shootbiomass    
 Min.   :  0.00                                      Min.   :  0.00   Min.   :0.0000   Min.   :    0.0  
 1st Qu.:  0.00                                      1st Qu.:  0.00   1st Qu.:0.0000   1st Qu.:  498.1  
 Median :  0.00                                      Median :  0.00   Median :0.0000   Median : 1835.2  
 Mean   : 24.89                                      Mean   : 12.37   Mean   :0.3711   Mean   : 8023.4  
 3rd Qu.: 46.00                                      3rd Qu.:  0.00   3rd Qu.:0.0000   3rd Qu.: 9703.8  
 Lucerne.Leaf.LAIFunction.Value.. Lucerne.Root.LengthDensity.1. Lucerne.Root.LengthDensity.2.
 Min.   : 0.000                   Min.   :0.00000               Min.   :0.000000             
 1st Qu.: 1.196                   1st Qu.:0.02337               1st Qu.:0.006188             
 Median : 3.233                   Median :0.03911               Median :0.012742             
 Mean   : 7.953                   Mean   :0.03493               Mean   :0.016347             
 3rd Qu.:11.146                   3rd Qu.:0.04474               3rd Qu.:0.025018             
 Lucerne.Root.LengthDensity.3. Lucerne.Root.LengthDensity.4. Lucerne.Root.LengthDensity.5.
 Min.   :0.000000              Min.   :0.000000              Min.   :0.000000             
 1st Qu.:0.004121              1st Qu.:0.004006              1st Qu.:0.004412             
 Median :0.009291              Median :0.009005              Median :0.010116             
 Mean   :0.011332              Mean   :0.010697              Mean   :0.011553             
 3rd Qu.:0.017243              3rd Qu.:0.016578              3rd Qu.:0.018546             
 Lucerne.Root.LengthDensity.6. Lucerne.Root.LengthDensity.7. Lucerne.Root.LengthDensity.8.
 Min.   :0.000000              Min.   :0.000000              Min.   :0.00000              
 1st Qu.:0.004776              1st Qu.:0.004625              1st Qu.:0.00480              
 Median :0.012072              Median :0.011890              Median :0.01227              
 Mean   :0.013187              Mean   :0.012629              Mean   :0.01272              
 3rd Qu.:0.021161              3rd Qu.:0.020755              3rd Qu.:0.01969              
 Lucerne.Root.LengthDensity.9. Lucerne.Root.LengthDensity.10. Lucerne.Root.LengthDensity.11.
 Min.   :0.000000              Min.   :0.000000               Min.   :0.000000              
 1st Qu.:0.004333              1st Qu.:0.003947               1st Qu.:0.003698              
 Median :0.010792              Median :0.010234               Median :0.008700              
 Mean   :0.011317              Mean   :0.010436               Mean   :0.009641              
 3rd Qu.:0.016236              3rd Qu.:0.015302               3rd Qu.:0.014021              
 Lucerne.Root.LengthDensity.12. Lucerne.Root.LengthDensity.13. Lucerne.Root.LengthDensity.14.
 Min.   :0.000000               Min.   :0.000000               Min.   :0.000000              
 1st Qu.:0.003349               1st Qu.:0.003217               1st Qu.:0.003024              
 Median :0.008141               Median :0.007350               Median :0.007787              
 Mean   :0.008249               Mean   :0.008167               Mean   :0.008588              
 3rd Qu.:0.012517               3rd Qu.:0.011869               3rd Qu.:0.012847              
 Lucerne.Root.LengthDensity.15. Lucerne.Root.LengthDensity.16. Lucerne.Root.LengthDensity.17.
 Min.   :0.000000               Min.   :0.000000               Min.   :0.000000              
 1st Qu.:0.002521               1st Qu.:0.002326               1st Qu.:0.001922              
 Median :0.006279               Median :0.006056               Median :0.003525              
 Mean   :0.007103               Mean   :0.006403               Mean   :0.004863              
 3rd Qu.:0.010472               3rd Qu.:0.008907               3rd Qu.:0.006937              
 Lucerne.Root.LengthDensity.18. Lucerne.Root.LengthDensity.19. Lucerne.Root.LengthDensity.20.
 Min.   :0.000000               Min.   :0.000000               Min.   :0.000000              
 1st Qu.:0.001478               1st Qu.:0.001189               1st Qu.:0.001048              
 Median :0.003466               Median :0.003464               Median :0.003478              
 Mean   :0.004212               Mean   :0.003752               Mean   :0.003745              
 3rd Qu.:0.005825               3rd Qu.:0.005487               3rd Qu.:0.005406              
 Lucerne.Root.LengthDensity.21. Lucerne.Root.LengthDensity.22. Lucerne.Root.LengthDensity.23.
 Min.   :0.0000000              Min.   :0.000000               Min.   :0.000                 
 1st Qu.:0.0009944              1st Qu.:0.001057               1st Qu.:0.001                 
 Median :0.0042995              Median :0.006886               Median :0.008                 
 Mean   :0.0042554              Mean   :0.007607               Mean   :0.009                 
 3rd Qu.:0.0059690              3rd Qu.:0.011035               3rd Qu.:0.013                 
 Soil.SoilWater.WaterTable Lucerne.AboveGround.Wt Lucerne.AboveGround.N Soil.SoilWater.ESW.1.
 Min.   : 300              Min.   :   0.00        Min.   : 0.0000       Min.   : 0.00        
 1st Qu.: 600              1st Qu.:  49.81        1st Qu.: 0.5081       1st Qu.:16.12        
 Median :1910              Median : 183.52        Median : 2.5040       Median :22.02        
 Mean   :1535              Mean   : 802.34        Mean   :19.2180       Mean   :20.14        
 3rd Qu.:2300              3rd Qu.: 970.38        3rd Qu.:20.2114       3rd Qu.:25.93        
 Soil.SoilWater.ESW.2. Soil.SoilWater.ESW.3. Soil.SoilWater.ESW.4. Soil.SoilWater.ESW.5.
 Min.   : 0.04039      Min.   : 0.3954       Min.   : 0.1298       Min.   : 0.1083      
 1st Qu.:19.05110      1st Qu.:17.1772       1st Qu.:16.8361       1st Qu.:17.3740      
 Median :23.81350      Median :18.6692       Median :18.5024       Median :20.0000      
 Mean   :21.23478      Mean   :19.0617       Mean   :17.7148       Mean   :17.6743      
 3rd Qu.:25.50340      3rd Qu.:24.0606       3rd Qu.:21.9175       3rd Qu.:20.9585      
 Soil.SoilWater.ESW.6. Soil.SoilWater.ESW.7. Soil.SoilWater.ESW.8. Soil.SoilWater.ESW.9.
 Min.   : 0.02136      Min.   : 0.03887      Min.   : 0.00         Min.   : 0.00        
 1st Qu.:17.06030      1st Qu.:13.67662      1st Qu.:12.82         1st Qu.:12.61        
 Median :21.82681      Median :18.14935      Median :20.70         Median :21.29        
 Mean   :18.57358      Mean   :17.12142      Mean   :17.86         Mean   :18.12        
 3rd Qu.:22.69583      3rd Qu.:22.68353      3rd Qu.:23.56         3rd Qu.:24.48        
 Soil.SoilWater.ESW.10. Soil.SoilWater.ESW.11. Soil.SoilWater.ESW.12. Soil.SoilWater.ESW.13.
 Min.   : 0.02268       Min.   : 0.00          Min.   : 0.00          Min.   : 0.00         
 1st Qu.:13.85029       1st Qu.:14.51          1st Qu.:15.77          1st Qu.:14.78         
 Median :22.34308       Median :22.77          Median :23.43          Median :20.50         
 Mean   :19.02666       Mean   :19.42          Mean   :20.39          Mean   :18.84         
 3rd Qu.:25.20769       3rd Qu.:25.73          3rd Qu.:27.00          3rd Qu.:24.55         
 Soil.SoilWater.ESW.14. Soil.SoilWater.ESW.15. Soil.SoilWater.ESW.16. Soil.SoilWater.ESW.17.
 Min.   : 0.00          Min.   : 0.00          Min.   : 0.00          Min.   : 0.00         
 1st Qu.:14.79          1st Qu.:15.05          1st Qu.:15.04          1st Qu.:16.31         
 Median :21.96          Median :23.92          Median :22.88          Median :22.11         
 Mean   :19.30          Mean   :20.13          Mean   :20.04          Mean   :20.36         
 3rd Qu.:25.22          3rd Qu.:25.82          3rd Qu.:25.56          3rd Qu.:25.73         
 Soil.SoilWater.ESW.18. Soil.SoilWater.ESW.19. Soil.SoilWater.ESW.20. Soil.SoilWater.ESW.21.
 Min.   : 0.00          Min.   : 0.00          Min.   : 0.00          Min.   : 0.00         
 1st Qu.:16.33          1st Qu.:16.38          1st Qu.:17.42          1st Qu.:15.93         
 Median :23.10          Median :23.72          Median :24.60          Median :23.43         
 Mean   :20.69          Mean   :20.92          Mean   :21.80          Mean   :20.70         
 3rd Qu.:26.03          3rd Qu.:26.34          3rd Qu.:27.24          3rd Qu.:26.24         
 Soil.SoilWater.ESW.22. Soil.SoilWater.ESW.23. Lucerne.TapRoot.Live.StructuralWt
 Min.   : 0.00          Min.   : 6.00          Min.   :  0.0                    
 1st Qu.:15.24          1st Qu.:17.48          1st Qu.:100.2                    
 Median :23.04          Median :23.77          Median :123.6                    
 Mean   :20.29          Mean   :22.12          Mean   :129.8                    
 3rd Qu.:26.97          3rd Qu.:28.99          3rd Qu.:160.2                    
 Lucerne.TapRoot.Live.StorageWt    Water            SowingDate             FD                SD1           
 Min.   :  0.000                Length:90533       Length:90533       Length:90533       Length:90533      
 1st Qu.:  3.793                Class :character   Class :character   Class :character   Class :character  
 Median :  6.721                Mode  :character   Mode  :character   Mode  :character   Mode  :character  
 Mean   :  8.124                                                                                           
 3rd Qu.:  9.945                                                                                           
   Cutting               SS                 LL                Name          
 Length:90533       Length:90533       Length:90533       Length:90533      
 Class :character   Class :character   Class :character   Class :character  
 Mode  :character   Mode  :character   Mode  :character   Mode  :character  
                                                                            
                                                                            
 [ reached getOption("max.print") -- omitted 2 rows ]
# myDb %>%
#   dplyr::select(Name) %>%
#   unique()

Prepare merge

Add info for merging

select variables that are for comparing with observed data

simD <- myDb %>%
  dplyr::select(Name,Clock.Today,LAI,SWC,Height,shootbiomass,RootWt, StemWt, LeafWt,NodeNumber) %>%
  tidyr::gather("Variable","Predicted",LAI:NodeNumber) %>%
  mutate(Name = as.factor(Name)) %>%
  mutate(Variable = as.factor(Variable)) %>%
  mutate(Clock.Today = ymd_hms(Clock.Today))
head(simD)
summary(simD)
                            Name         Clock.Today                          Variable     
 Iversen_8FWaterdryCuttingGR22: 15152   Min.   :1996-10-31 12:00:00   Height      : 90533  
 Iversen_8FWaterdryCuttingGR23: 15152   1st Qu.:2000-09-14 12:00:00   LAI         : 90533  
 Iversen_8FWaterdryCuttingGR25: 15152   Median :2001-12-17 12:00:00   LeafWt      : 90533  
 Iversen_8FWaterdryCuttingGR32: 15152   Mean   :2003-12-06 04:37:33   NodeNumber  : 90533  
 Iversen_8FWaterdryCuttingGR33: 15152   3rd Qu.:2004-04-19 12:00:00   RootWt      : 90533  
 Iversen_8FWaterdryCuttingGR35: 15152   Max.   :2018-01-01 12:00:00   shootbiomass: 90533  
 (Other)                      :633352                                 (Other)     :181066  
   Predicted       
 Min.   :    0.00  
 1st Qu.:   27.23  
 Median :  529.09  
 Mean   : 2295.22  
 3rd Qu.: 1263.16  
 Max.   :34335.25  
                   
head(ObsH)
mergedf<-merge(obsHN,simD,by=c("Clock.Today","Name","Variable"))
summary(mergedf)
  Clock.Today                                     Name           Variable  
 Min.   :1997-10-23   Iversen_121DefoliationLLFDFD5 :107   Height    :407  
 1st Qu.:2001-02-19   Iversen_91DefoliationLL       :107   Branch    :  0  
 Median :2002-10-21   Iversen_8Waterirr             : 68   CrownWt   :  0  
 Mean   :2005-09-06   Iversen_9SowingDateSD1Waterirr: 67   Fraction  :  0  
 3rd Qu.:2015-02-03   Iversen_9SowingDateSD2Waterirr: 25   HardStemWt:  0  
 Max.   :2017-12-29   Iversen_9SowingDateSD3Waterirr: 18   LAI       :  0  
                      (Other)                       : 15   (Other)   :  0  
                                 ExpUnitCode      Collection       Experiment.x Water.x   Defoliation.x
 Iversen_9SowingDateSD2WaterirrGs_1Rt_1: 14   1997_2001: 68   Lincoln2000:131   dry:  0   HH:  0       
 Iversen_9SowingDateSD1WaterirrGs_1Rt_1: 12   2000_2002:125   Lincoln2015:107   irr:407   LL:407       
 Iversen_9SowingDateSD3WaterirrGs_1Rt_1: 11   2002_2004:107   Lincoln2003: 54                          
 Iversen_9SowingDateSD4WaterirrGs_1Rt_1: 11   2010_2012:  0   Lincoln2001: 35                          
 Iversen_8WaterirrGs_5Rt_1             : 10   2014_2018:107   Lincoln2004: 31                          
 Iversen_91DefoliationLLGs_2Rt_1       : 10                   Lincoln2002: 22                          
 (Other)                               :339                   (Other)    : 27                          
  SowingDate.x   FD.x         Period    GrowthSeason.x    Rotation.x      StartDate         
 No     :175   FD10:  0   00_01  :128   Min.   :1.000   Min.   :1.000   Min.   :1997-10-07  
 no     :107   FD2 :  0   02_03  : 52   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:2001-01-24  
 SD1    : 67   FD5 :407   03_04  : 48   Median :2.000   Median :3.000   Median :2002-10-06  
 SD2    : 25              16_17  : 39   Mean   :2.101   Mean   :3.098   Mean   :2005-08-05  
 SD3    : 18              01_02  : 38   3rd Qu.:3.000   3rd Qu.:5.000   3rd Qu.:2015-01-30  
 SD4    : 15              15_16  : 35   Max.   :5.000   Max.   :7.000   Max.   :2017-12-04  
 (Other):  0              (Other): 67                                                       
    MidDate             FinishDate            Interval        VariableUnits       Time        Observed     
 Min.   :1997-10-28   Min.   :1997-11-19   Min.   :  0.00   %        :  0   12:00:00:407   Min.   :  0.00  
 1st Qu.:2001-02-13   1st Qu.:2001-03-20   1st Qu.: 14.50   cm       :232                  1st Qu.: 61.75  
 Median :2002-10-26   Median :2002-11-16   Median : 28.00   fractio0l:  0                  Median :185.00  
 Mean   :2005-09-03   Mean   :2005-10-03   Mean   : 32.16   Fraction :  0                  Mean   :218.38  
 3rd Qu.:2015-02-19   3rd Qu.:2015-03-11   3rd Qu.: 40.50   kg/ha    :  0                  3rd Qu.:360.00  
 Max.   :2017-12-25   Max.   :2018-01-15   Max.   :116.00   m2/m2    :  0                  Max.   :798.00  
                                                            mm       :175                                  
     StdDEV       ExperimentID  TreatmentID        ID      GrowthSeason1 Rotation1 
 Min.   : 0.000   E1: 68       ILL    :175   E3ILL  :107   Gs_1:160      Rt_1:112  
 1st Qu.: 0.000   E2:125       ILLF5  :107   E5ILLF5:107   Gs_2:140      Rt_2: 80  
 Median : 3.107   E3:107       ILLS1  : 67   E1ILL  : 68   Gs_3: 54      Rt_3: 58  
 Mean   :12.001   E4:  0       ILLS2  : 25   E2ILLS1: 67   Gs_4: 12      Rt_4: 50  
 3rd Qu.:16.955   E5:107       ILLS3  : 18   E2ILLS2: 25   Gs_5: 41      Rt_5: 46  
 Max.   :91.520                ILLS4  : 15   E2ILLS3: 18   Gs_6:  0      Rt_6: 42  
 NA's   :228                   (Other):  0   (Other): 15                 Rt_7: 19  
  Clock.Today1                   GrowthSeason2   Rotation2       year           day             rain        
 Min.   :1997-10-23 12:00:00   Y1(00_01): 87   R2     :80   Min.   :1997   Min.   :  1.0   Min.   : 0.0000  
 1st Qu.:2001-02-19 12:00:00   Y1(02_03): 52   S1     :77   1st Qu.:2001   1st Qu.: 63.0   1st Qu.: 0.0000  
 Median :2002-10-21 12:00:00   Y2(03_04): 48   R3     :58   Median :2002   Median :139.0   Median : 0.0000  
 Mean   :2005-09-06 20:55:25   Y5(00_01): 41   R4     :50   Mean   :2005   Mean   :170.8   Mean   : 0.8781  
 3rd Qu.:2015-02-03 12:00:00   Y3(16_17): 39   R5     :46   3rd Qu.:2015   3rd Qu.:292.0   3rd Qu.: 0.0000  
 Max.   :2017-12-29 12:00:00   Y2(01_02): 38   R6     :42   Max.   :2017   Max.   :365.0   Max.   :31.8000  
                               (Other)  :102   (Other):54                                                   
      maxt            mint             mean            radn           wind             vp       
 Min.   : 7.90   Min.   :-4.900   Min.   : 2.55   Min.   : 1.5   Min.   :0.700   Min.   : 5.10  
 1st Qu.:15.25   1st Qu.: 4.350   1st Qu.:10.40   1st Qu.: 9.7   1st Qu.:2.900   1st Qu.:10.00  
 Median :19.00   Median : 8.700   Median :13.20   Median :16.1   Median :3.900   Median :11.40  
 Mean   :19.16   Mean   : 7.842   Mean   :13.47   Mean   :16.7   Mean   :3.991   Mean   :11.78  
 3rd Qu.:22.15   3rd Qu.:11.300   3rd Qu.:16.50   3rd Qu.:22.6   3rd Qu.:4.900   3rd Qu.:13.75  
 Max.   :33.80   Max.   :20.600   Max.   :26.20   Max.   :33.4   Max.   :9.300   Max.   :22.00  
                                                                                                
       Pp              Tb        TTbeta            Tbb       TTbroken           TbF        TTfick      
 Min.   :10.02   Min.   :1   Min.   : 0.128   Min.   :1   Min.   : 1.841   Min.   :1   Min.   : 2.222  
 1st Qu.:12.21   1st Qu.:1   1st Qu.: 2.242   1st Qu.:1   1st Qu.: 6.819   1st Qu.:1   1st Qu.: 8.144  
 Median :14.27   Median :1   Median : 4.104   Median :1   Median : 8.972   Median :1   Median :10.611  
 Mean   :13.92   Mean   :1   Mean   : 5.802   Mean   :1   Mean   : 9.526   Mean   :1   Mean   :10.869  
 3rd Qu.:15.82   3rd Qu.:1   3rd Qu.: 8.081   3rd Qu.:1   3rd Qu.:12.019   3rd Qu.:1   3rd Qu.:13.566  
 Max.   :16.65   Max.   :1   Max.   :23.343   Max.   :1   Max.   :20.258   Max.   :1   Max.   :20.813  
                                                                                                       
                                   ExpName         Experiment.y Water.y   Defoliation.y  SowingDate.y
 Iversen_9SowingDateSD2WaterirrGs_1Rt_1: 14   Lincoln1997: 68   dry:  0   HH:  0        No     :175  
 Iversen_9SowingDateSD1WaterirrGs_1Rt_1: 12   Lincoln2000:110   irr:407   LL:407        no     :107  
 Iversen_9SowingDateSD3WaterirrGs_1Rt_1: 11   Lincoln2001: 15             LS:  0        SD1    : 67  
 Iversen_9SowingDateSD4WaterirrGs_1Rt_1: 11   Lincoln2002:107             SL:  0        SD2    : 25  
 Iversen_8WaterirrGs_5Rt_1             : 10   Lincoln2010:  0             SS:  0        SD3    : 18  
 Iversen_91DefoliationLLGs_2Rt_1       : 10   Lincoln2015:107                           SD4    : 15  
 (Other)                               :339                                             (Other):  0  
   FD.y     GrowthSeason.y   Rotation.y   Tt_beta_sum        Tt_fick_sum       Tt_broken_sum     
 FD10:  0   Gs_1:160       Rt_1   :112   Min.   :  0.2834   Min.   :   4.022   Min.   :   3.333  
 FD2 :  0   Gs_2:140       Rt_2   : 80   1st Qu.: 60.6597   1st Qu.: 164.966   1st Qu.: 142.557  
 FD5 :407   Gs_3: 54       Rt_3   : 58   Median :123.1457   Median : 299.055   Median : 258.135  
            Gs_4: 12       Rt_4   : 50   Mean   :156.6504   Mean   : 325.886   Mean   : 282.948  
            Gs_5: 41       Rt_5   : 46   3rd Qu.:217.9675   3rd Qu.: 453.067   3rd Qu.: 392.975  
            Gs_6:  0       Rt_6   : 42   Max.   :722.6708   Max.   :1186.654   Max.   :1051.876  
                           (Other): 19                                                           
      Ppm            Tmean        GrowthRotation   Predicted    
 Min.   :10.25   Min.   : 7.024   11     : 60    Min.   :  0.0  
 1st Qu.:11.99   1st Qu.:10.974   12     : 38    1st Qu.:102.5  
 Median :14.48   Median :13.963   21     : 24    Median :221.6  
 Mean   :13.83   Mean   :13.215   26     : 24    Mean   :264.3  
 3rd Qu.:15.87   3rd Qu.:15.723   13     : 23    3rd Qu.:398.3  
 Max.   :16.55   Max.   :19.327   22     : 23    Max.   :858.6  
                                  (Other):215                   
str(mergedf)
'data.frame':   407 obs. of  60 variables:
 $ Clock.Today   : Date, format: "1997-10-23" "1997-10-28" "1997-11-03" ...
 $ Name          : Factor w/ 25 levels "Iversen_121DefoliationHHFDFD5",..: 16 16 16 16 16 16 16 16 16 16 ...
 $ Variable      : Factor w/ 19 levels "Branch","CrownWt",..: 5 5 5 5 5 5 5 5 5 5 ...
 $ ExpUnitCode   : Factor w/ 199 levels "Iversen_8WaterdryGs_1Rt_1",..: 34 34 34 34 34 35 35 35 36 36 ...
 $ Collection    : Factor w/ 5 levels "1997_2001","2000_2002",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Experiment.x  : Factor w/ 11 levels "Lincoln1997",..: 1 1 1 1 1 1 1 1 2 2 ...
 $ Water.x       : Factor w/ 2 levels "dry","irr": 2 2 2 2 2 2 2 2 2 2 ...
 $ Defoliation.x : Factor w/ 2 levels "HH","LL": 2 2 2 2 2 2 2 2 2 2 ...
 $ SowingDate.x  : Factor w/ 12 levels "no","No","SD1",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ FD.x          : Factor w/ 3 levels "FD10","FD2","FD5": 3 3 3 3 3 3 3 3 3 3 ...
 $ Period        : Factor w/ 16 levels "00_01","01_02",..: 14 14 14 14 14 14 14 14 14 14 ...
 $ GrowthSeason.x: int  2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation.x    : int  2 2 2 2 2 3 3 3 4 4 ...
 $ StartDate     : Date, format: "1997-10-07" "1997-10-07" "1997-10-07" ...
 $ MidDate       : Date, format: "1997-10-28" "1997-10-28" "1997-10-28" ...
 $ FinishDate    : Date, format: "1997-11-19" "1997-11-19" "1997-11-19" ...
 $ Interval      : int  16 21 27 34 41 19 28 33 22 30 ...
 $ VariableUnits : Factor w/ 7 levels "%","cm","fractio0l",..: 7 7 7 7 7 7 7 7 7 7 ...
 $ Time          : Factor w/ 1 level "12:00:00": 1 1 1 1 1 1 1 1 1 1 ...
 $ Observed      : num  62.7 146.7 320.7 436.7 564.3 ...
 $ StdDEV        : num  0 0 0 0 0 0 0 0 0 0 ...
 $ ExperimentID  : Factor w/ 5 levels "E1","E2","E3",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ TreatmentID   : Factor w/ 20 levels "DLL","DLLS1",..: 13 13 13 13 13 13 13 13 13 13 ...
 $ ID            : Factor w/ 25 levels "E1DLL","E1ILL",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ GrowthSeason1 : Factor w/ 6 levels "Gs_1","Gs_2",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation1     : Factor w/ 7 levels "Rt_1","Rt_2",..: 2 2 2 2 2 3 3 3 4 4 ...
 $ Clock.Today1  : POSIXct, format: "1997-10-23 12:00:00" "1997-10-28 12:00:00" "1997-11-03 12:00:00" ...
 $ GrowthSeason2 : Factor w/ 18 levels "Y1(96_97)","Y2(97_98)",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation2     : Factor w/ 8 levels "R1","R2","R3",..: 2 2 2 2 2 3 3 3 4 4 ...
 $ year          : int  1997 1997 1997 1997 1997 1997 1997 1997 1998 1998 ...
 $ day           : int  296 301 307 314 321 343 352 357 15 23 ...
 $ rain          : num  0 0.7 0 0 0 0 0 0 0 0 ...
 $ maxt          : num  15.1 24.3 26 12 18.5 19.4 28 31.9 31.4 25.1 ...
 $ mint          : num  8.8 6.9 5.8 4.7 9.6 8 17 14.1 14.2 15.6 ...
 $ mean          : num  12 15.6 15.9 8.4 14.1 13.7 22.5 23 22.8 20.4 ...
 $ radn          : num  20.2 15.6 26.2 26 22.5 30.7 21.6 19.7 22.1 16 ...
 $ wind          : num  4.3 2.9 5.6 5.7 5.8 4.2 6.1 4.9 7.8 3.9 ...
 $ vp            : num  10.8 13.1 11.5 7.9 10.6 12.3 12.7 16.1 14.2 17.4 ...
 $ Pp            : num  14.6 14.9 15.2 15.5 15.8 ...
 $ Tb            : int  1 1 1 1 1 1 1 1 1 1 ...
 $ TTbeta        : num  2.652 8.148 9.211 0.944 4.723 ...
 $ Tbb           : int  1 1 1 1 1 1 1 1 1 1 ...
 $ TTbroken      : num  7.87 11.44 11.84 5.3 9.66 ...
 $ TbF           : int  1 1 1 1 1 1 1 1 1 1 ...
 $ TTfick        : num  9.49 12.74 13.02 6.4 11.33 ...
 $ ExpName       : Factor w/ 338 levels "Iversen_121DefoliationHHFDFD10Gs_1Rt_2",..: 171 171 171 171 171 172 172 172 173 173 ...
 $ Experiment.y  : Factor w/ 6 levels "Lincoln1997",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Water.y       : Factor w/ 2 levels "dry","irr": 2 2 2 2 2 2 2 2 2 2 ...
 $ Defoliation.y : Factor w/ 5 levels "HH","LL","LS",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ SowingDate.y  : Factor w/ 12 levels "no","No","SD1",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ FD.y          : Factor w/ 3 levels "FD10","FD2","FD5": 3 3 3 3 3 3 3 3 3 3 ...
 $ GrowthSeason.y: Factor w/ 6 levels "Gs_1","Gs_2",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation.y    : Factor w/ 10 levels "Rt_1","Rt_10",..: 3 3 3 3 3 4 4 4 5 5 ...
 $ Tt_beta_sum   : num  69.7 96.2 141.7 172.5 217.7 ...
 $ Tt_fick_sum   : num  166 220 295 363 447 ...
 $ Tt_broken_sum : num  142 189 256 315 388 ...
 $ Ppm           : num  14.9 14.9 14.9 14.9 14.9 ...
 $ Tmean         : num  13.2 13.2 13.2 13.2 13.2 ...
 $ GrowthRotation: Factor w/ 36 levels "11","12","13",..: 9 9 9 9 9 10 10 10 11 11 ...
 $ Predicted     : num  182 249 350 438 549 ...
mergedf

mytheme for observed and predicted graphs

mytheme2<-theme(
     panel.spacing=unit(.01, "lines"),
     panel.border = element_rect(colour = "black",size=1), 
     panel.grid.major = element_blank(),
     panel.grid.minor = element_blank(),
     axis.line = element_line(colour = "black",size = 1),
     axis.text.x = element_text(face = "plain", color = "black", size = 14, vjust=0.5, hjust = 1),
     axis.text.y = element_text(face = "plain", color = "black", size = 14),
     axis.title.x=element_text(face="bold",colour="black",size = 14),
     axis.title.y=element_text(face="bold",colour="black",size = 14),
     strip.background = element_rect(colour = "black", fill = "white",size=1),
     strip.text.x = element_text(size=14, angle=0, face = "plain"), 
     strip.text.y = element_text(size=14, face="plain"),
     legend.title = element_text(colour="black", size=14, face="bold"),
     axis.text = element_text(face = "bold", vjust = 0.5, size = 14))

Node number

Time series

obs Vs Pre for each experiment

1997-2001

obsheight1<-ObsH%>%dplyr::filter(Name=="Iversen_8Waterirr")
  
 simD1<-simD%>%
   mutate(Clock.Today = ymd_hms(Clock.Today))%>%
   dplyr::filter(Variable=="Height")%>%
   dplyr::filter(Name=="Iversen_8Waterirr")
 str(simD1)
'data.frame':   1894 obs. of  4 variables:
 $ Name       : Factor w/ 85 levels "AshleyDeneSowingDateSD1",..: 45 45 45 45 45 45 45 45 45 45 ...
 $ Clock.Today: POSIXct, format: "1996-10-31 12:00:00" "1997-10-16 12:00:00" "1996-11-01 12:00:00" ...
 $ Variable   : Factor w/ 8 levels "Height","LAI",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Predicted  : num  0 114.3 0 34.3 128.4 ...
 simD1%>%
 ggplot(aes(x=Clock.Today,y=Predicted))+geom_line(size=1)+theme_bw()+
 facet_wrap(~ID,ncol = 2)+
 geom_point(data=obsheight1, aes(x=Clock.Today1, y=Observed),colour="green",size=3)+
 theme(legend.title=element_blank(),legend.position = "blank")+xlab("Date")+ylab("Plant height (mm)")+
 mytheme2+
 annotate("text", x=ymd_hms("1999-10-24 12:00:00"), y=750, size = 5, label ="paste(R_RMSD == 37.6,'%')", parse=T)

   #geom_text(aes(x=ymd_hms("1999-10-24 12:00:00"), y=750, label="R_RMSD = 37.6%",size=5))
 
 ggsave("D:/R/Pictures/Height/Iversen_8Waterirrheight1.png", width=8, height=4, dpi=500)

2002-2004

obsheight2<-obsHN%>% 
  dplyr::filter(Name=="Iversen_91DefoliationLL")%>%
  dplyr::filter(Variable=="Height")
simD2<-simD%>%
  mutate(Clock.Today = ymd_hms(Clock.Today))%>%
  dplyr::filter(Variable=="Height")%>%
  dplyr::filter(Name=="Iversen_91DefoliationLL")%>%
   dplyr::filter(Clock.Today>"2002-06-01")
str(simD2)
'data.frame':   884 obs. of  4 variables:
 $ Name       : Factor w/ 85 levels "AshleyDeneSowingDateSD1",..: 46 46 46 46 46 46 46 46 46 46 ...
 $ Clock.Today: POSIXct, format: "2004-04-27 12:00:00" "2003-10-21 12:00:00" "2003-10-22 12:00:00" ...
 $ Variable   : Factor w/ 8 levels "Height","LAI",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Predicted  : num  222 143.6 157.7 75.1 96.7 ...
simD2%>%
ggplot(aes(x=Clock.Today,y=Predicted))+geom_line(size=1)+theme_bw()+
  facet_wrap(~ID,ncol = 1)+
  geom_point(data=obsheight2, aes(x=Clock.Today1, y=Observed),colour="green",size=3)+
  theme(legend.title=element_blank(),legend.position = "blank")+xlab("Date")+ylab("Plant height (mm)")+
  mytheme2+
  annotate("text", x=ymd_hms("2003-07-24 12:00:00"), y=750, size = 5, label ="paste(R_RMSD == 27.6,'%')", parse=T)

 #geom_text(aes(x=ymd_hms("2003-07-24 12:00:00"), y=750, label="R_RMSD = 27.6%",size=5))
 ggsave("D:/R/Pictures/Height/Iversen_91DefoliationLLheight1.png", width=8, height=4, dpi=500)
obsheight2<-obsHN%>% 
  dplyr::filter(Name=="Iversen_121DefoliationLLFDFD5")%>%
  dplyr::filter(Variable=="Height")
simD2a<-simD%>%
  mutate(Clock.Today = ymd_hms(Clock.Today))%>%
  dplyr::filter(Variable=="Height")%>%
  dplyr::filter(Name=="Iversen_121DefoliationLLFDFD5")%>%
  dplyr::filter(Clock.Today<"2015-01-06")
simD2b<-simD%>%
  mutate(Clock.Today = ymd_hms(Clock.Today))%>%
  dplyr::filter(Variable=="Height")%>%
  dplyr::filter(Name=="Iversen_121DefoliationLLFDFD5")%>%
  dplyr::filter(Clock.Today>"2015-01-30")
simD2<-rbind(simD2a,simD2b)
  
   
str(simD2)
'data.frame':   1158 obs. of  4 variables:
 $ Name       : Factor w/ 85 levels "AshleyDeneSowingDateSD1",..: 16 16 16 16 16 16 16 16 16 16 ...
 $ Clock.Today: POSIXct, format: "2014-10-22 12:00:00" "2014-10-16 12:00:00" "2014-12-24 12:00:00" ...
 $ Variable   : Factor w/ 8 levels "Height","LAI",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Predicted  : num  0 0 404 102 0 ...
simD2%>%
ggplot(aes(x=Clock.Today,y=Predicted))+geom_line(size=1)+theme_bw()+
  facet_wrap(~ID,ncol = 1)+
  geom_point(data=obsheight2, aes(x=Clock.Today1, y=Observed),colour="green",size=3)+
  theme(legend.title=element_blank(),legend.position = "blank")+xlab("Date")+ylab("Plant height (mm)")+
   mytheme2+
  annotate("text", x=ymd_hms("2016-07-24 12:00:00"), y=920, size = 5, label ="paste(R_RMSD == 40,'%')" , parse=T)

 #geom_text(aes(x=ymd_hms("2016-07-24 12:00:00"), y=920,label="R_RMSD = 40%",size=5))
 ggsave("D:/R/Pictures/Height/Iversen_121DefoliationLLFDFD5height1.png", width=8, height=4, dpi=500)
  
  

2000-2002

obsheight3<-obsHN%>%
  dplyr::filter(Collection=="2000_2002")%>%
  dplyr::filter(Variable=="Height")
simD3A<-simD%>%
  mutate(Clock.Today = ymd_hms(Clock.Today))%>%
  dplyr::filter(Clock.Today>"2000-10-24 12:00:00")%>%
  dplyr::filter(Clock.Today<"2002-07-01 12:00:00")%>%
  dplyr::filter(Name==c("Iversen_9SowingDateSD1Waterirr","Iversen_9SowingDateSD2Waterirr","Iversen_9SowingDateSD3Waterirr","Iversen_9SowingDateSD4Waterirr"))%>%
  dplyr::filter(Variable=="Height")
  
DF<-data.frame(Name=c("Iversen_9SowingDateSD1Waterirr","Iversen_9SowingDateSD2Waterirr","Iversen_9SowingDateSD3Waterirr","Iversen_9SowingDateSD4Waterirr"),ID= c("E2ILLS1","E2ILLS2","E2ILLS3","E2ILLS4"))
simD3<-merge(DF,simD3A, by=c("Name"))
p1<-simD3%>%
ggplot(aes(x=Clock.Today,y=Predicted))+geom_line(size=1)+theme_bw()+
  geom_point(data=obsheight3, aes(x=Clock.Today1, y=Observed),colour="green",size=3)+
  facet_wrap(~ID,ncol = 2)+
  theme(legend.title=element_blank(),legend.position = "blank")+xlab("Date")+ylab("Plant height (mm)")+
  mytheme2
dat_text <- data.frame(
  label = c("R_RMSE=28.2%","R_RMSE=33.2%","R_RMSE=48.6%", "R_RMSE=34.5%"),
  ID= c("E2ILLS1","E2ILLS2","E2ILLS3","E2ILLS4"),
  x= ymd_hms("2001-01-24 12:00:00", "2001-01-24 12:00:00","2001-01-24 12:00:00","2001-01-24 12:00:00"),
  y=c(750,750,750,750)) 
 p1 +geom_text(data=dat_text, mapping = aes(x=x,y=y, label = label),hjust   = -0.1,vjust   = -1,size=5)  

 
ggsave("D:/R/Pictures/Height/Iversen_9SowingDateSDWaterheight1.png", width=8, height=8, dpi=500)
  

Statistic and Graph

mergedf
summary(mergedf)
  Clock.Today                                     Name           Variable  
 Min.   :1997-10-23   Iversen_121DefoliationLLFDFD5 :107   Height    :407  
 1st Qu.:2001-02-19   Iversen_91DefoliationLL       :107   Branch    :  0  
 Median :2002-10-21   Iversen_8Waterirr             : 68   CrownWt   :  0  
 Mean   :2005-09-06   Iversen_9SowingDateSD1Waterirr: 67   Fraction  :  0  
 3rd Qu.:2015-02-03   Iversen_9SowingDateSD2Waterirr: 25   HardStemWt:  0  
 Max.   :2017-12-29   Iversen_9SowingDateSD3Waterirr: 18   LAI       :  0  
                      (Other)                       : 15   (Other)   :  0  
                                 ExpUnitCode      Collection       Experiment.x Water.x  
 Iversen_9SowingDateSD2WaterirrGs_1Rt_1: 14   1997_2001: 68   Lincoln2000:131   dry:  0  
 Iversen_9SowingDateSD1WaterirrGs_1Rt_1: 12   2000_2002:125   Lincoln2015:107   irr:407  
 Iversen_9SowingDateSD3WaterirrGs_1Rt_1: 11   2002_2004:107   Lincoln2003: 54            
 Iversen_9SowingDateSD4WaterirrGs_1Rt_1: 11   2010_2012:  0   Lincoln2001: 35            
 Iversen_8WaterirrGs_5Rt_1             : 10   2014_2018:107   Lincoln2004: 31            
 Iversen_91DefoliationLLGs_2Rt_1       : 10                   Lincoln2002: 22            
 (Other)                               :339                   (Other)    : 27            
 Defoliation.x  SowingDate.x   FD.x         Period    GrowthSeason.x    Rotation.x   
 HH:  0        No     :175   FD10:  0   00_01  :128   Min.   :1.000   Min.   :1.000  
 LL:407        no     :107   FD2 :  0   02_03  : 52   1st Qu.:1.000   1st Qu.:1.000  
               SD1    : 67   FD5 :407   03_04  : 48   Median :2.000   Median :3.000  
               SD2    : 25              16_17  : 39   Mean   :2.101   Mean   :3.098  
               SD3    : 18              01_02  : 38   3rd Qu.:3.000   3rd Qu.:5.000  
               SD4    : 15              15_16  : 35   Max.   :5.000   Max.   :7.000  
               (Other):  0              (Other): 67                                  
   StartDate             MidDate             FinishDate            Interval        VariableUnits
 Min.   :1997-10-07   Min.   :1997-10-28   Min.   :1997-11-19   Min.   :  0.00   %        :  0  
 1st Qu.:2001-01-24   1st Qu.:2001-02-13   1st Qu.:2001-03-20   1st Qu.: 14.50   cm       :232  
 Median :2002-10-06   Median :2002-10-26   Median :2002-11-16   Median : 28.00   fractio0l:  0  
 Mean   :2005-08-05   Mean   :2005-09-03   Mean   :2005-10-03   Mean   : 32.16   Fraction :  0  
 3rd Qu.:2015-01-30   3rd Qu.:2015-02-19   3rd Qu.:2015-03-11   3rd Qu.: 40.50   kg/ha    :  0  
 Max.   :2017-12-04   Max.   :2017-12-25   Max.   :2018-01-15   Max.   :116.00   m2/m2    :  0  
                                                                                 mm       :175  
       Time        Observed          StdDEV       ExperimentID  TreatmentID        ID     
 12:00:00:407   Min.   :  0.00   Min.   : 0.000   E1: 68       ILL    :175   E3ILL  :107  
                1st Qu.: 61.75   1st Qu.: 0.000   E2:125       ILLF5  :107   E5ILLF5:107  
                Median :185.00   Median : 3.107   E3:107       ILLS1  : 67   E1ILL  : 68  
                Mean   :218.38   Mean   :12.001   E4:  0       ILLS2  : 25   E2ILLS1: 67  
                3rd Qu.:360.00   3rd Qu.:16.955   E5:107       ILLS3  : 18   E2ILLS2: 25  
                Max.   :798.00   Max.   :91.520                ILLS4  : 15   E2ILLS3: 18  
                                 NA's   :228                   (Other):  0   (Other): 15  
 GrowthSeason1 Rotation1   Clock.Today1                   GrowthSeason2   Rotation2       year     
 Gs_1:160      Rt_1:112   Min.   :1997-10-23 12:00:00   Y1(00_01): 87   R2     :80   Min.   :1997  
 Gs_2:140      Rt_2: 80   1st Qu.:2001-02-19 12:00:00   Y1(02_03): 52   S1     :77   1st Qu.:2001  
 Gs_3: 54      Rt_3: 58   Median :2002-10-21 12:00:00   Y2(03_04): 48   R3     :58   Median :2002  
 Gs_4: 12      Rt_4: 50   Mean   :2005-09-06 20:55:25   Y5(00_01): 41   R4     :50   Mean   :2005  
 Gs_5: 41      Rt_5: 46   3rd Qu.:2015-02-03 12:00:00   Y3(16_17): 39   R5     :46   3rd Qu.:2015  
 Gs_6:  0      Rt_6: 42   Max.   :2017-12-29 12:00:00   Y2(01_02): 38   R6     :42   Max.   :2017  
               Rt_7: 19                                 (Other)  :102   (Other):54                 
      day             rain              maxt            mint             mean            radn     
 Min.   :  1.0   Min.   : 0.0000   Min.   : 7.90   Min.   :-4.900   Min.   : 2.55   Min.   : 1.5  
 1st Qu.: 63.0   1st Qu.: 0.0000   1st Qu.:15.25   1st Qu.: 4.350   1st Qu.:10.40   1st Qu.: 9.7  
 Median :139.0   Median : 0.0000   Median :19.00   Median : 8.700   Median :13.20   Median :16.1  
 Mean   :170.8   Mean   : 0.8781   Mean   :19.16   Mean   : 7.842   Mean   :13.47   Mean   :16.7  
 3rd Qu.:292.0   3rd Qu.: 0.0000   3rd Qu.:22.15   3rd Qu.:11.300   3rd Qu.:16.50   3rd Qu.:22.6  
 Max.   :365.0   Max.   :31.8000   Max.   :33.80   Max.   :20.600   Max.   :26.20   Max.   :33.4  
                                                                                                  
      wind             vp              Pp              Tb        TTbeta            Tbb   
 Min.   :0.700   Min.   : 5.10   Min.   :10.02   Min.   :1   Min.   : 0.128   Min.   :1  
 1st Qu.:2.900   1st Qu.:10.00   1st Qu.:12.21   1st Qu.:1   1st Qu.: 2.242   1st Qu.:1  
 Median :3.900   Median :11.40   Median :14.27   Median :1   Median : 4.104   Median :1  
 Mean   :3.991   Mean   :11.78   Mean   :13.92   Mean   :1   Mean   : 5.802   Mean   :1  
 3rd Qu.:4.900   3rd Qu.:13.75   3rd Qu.:15.82   3rd Qu.:1   3rd Qu.: 8.081   3rd Qu.:1  
 Max.   :9.300   Max.   :22.00   Max.   :16.65   Max.   :1   Max.   :23.343   Max.   :1  
                                                                                         
    TTbroken           TbF        TTfick                                         ExpName   
 Min.   : 1.841   Min.   :1   Min.   : 2.222   Iversen_9SowingDateSD2WaterirrGs_1Rt_1: 14  
 1st Qu.: 6.819   1st Qu.:1   1st Qu.: 8.144   Iversen_9SowingDateSD1WaterirrGs_1Rt_1: 12  
 Median : 8.972   Median :1   Median :10.611   Iversen_9SowingDateSD3WaterirrGs_1Rt_1: 11  
 Mean   : 9.526   Mean   :1   Mean   :10.869   Iversen_9SowingDateSD4WaterirrGs_1Rt_1: 11  
 3rd Qu.:12.019   3rd Qu.:1   3rd Qu.:13.566   Iversen_8WaterirrGs_5Rt_1             : 10  
 Max.   :20.258   Max.   :1   Max.   :20.813   Iversen_91DefoliationLLGs_2Rt_1       : 10  
                                               (Other)                               :339  
      Experiment.y Water.y   Defoliation.y  SowingDate.y   FD.y     GrowthSeason.y   Rotation.y 
 Lincoln1997: 68   dry:  0   HH:  0        No     :175   FD10:  0   Gs_1:160       Rt_1   :112  
 Lincoln2000:110   irr:407   LL:407        no     :107   FD2 :  0   Gs_2:140       Rt_2   : 80  
 Lincoln2001: 15             LS:  0        SD1    : 67   FD5 :407   Gs_3: 54       Rt_3   : 58  
 Lincoln2002:107             SL:  0        SD2    : 25              Gs_4: 12       Rt_4   : 50  
 Lincoln2010:  0             SS:  0        SD3    : 18              Gs_5: 41       Rt_5   : 46  
 Lincoln2015:107                           SD4    : 15              Gs_6:  0       Rt_6   : 42  
                                           (Other):  0                             (Other): 19  
  Tt_beta_sum        Tt_fick_sum       Tt_broken_sum           Ppm            Tmean       
 Min.   :  0.2834   Min.   :   4.022   Min.   :   3.333   Min.   :10.25   Min.   : 7.024  
 1st Qu.: 60.6597   1st Qu.: 164.966   1st Qu.: 142.557   1st Qu.:11.99   1st Qu.:10.974  
 Median :123.1457   Median : 299.055   Median : 258.135   Median :14.48   Median :13.963  
 Mean   :156.6504   Mean   : 325.886   Mean   : 282.948   Mean   :13.83   Mean   :13.215  
 3rd Qu.:217.9675   3rd Qu.: 453.067   3rd Qu.: 392.975   3rd Qu.:15.87   3rd Qu.:15.723  
 Max.   :722.6708   Max.   :1186.654   Max.   :1051.876   Max.   :16.55   Max.   :19.327  
                                                                                          
 GrowthRotation   Predicted    
 11     : 60    Min.   :  0.0  
 12     : 38    1st Qu.:102.5  
 21     : 24    Median :221.6  
 26     : 24    Mean   :264.3  
 13     : 23    3rd Qu.:398.3  
 22     : 23    Max.   :858.6  
 (Other):215                   
str(mergedf)
'data.frame':   407 obs. of  60 variables:
 $ Clock.Today   : Date, format: "1997-10-23" "1997-10-28" "1997-11-03" ...
 $ Name          : Factor w/ 25 levels "Iversen_121DefoliationHHFDFD5",..: 16 16 16 16 16 16 16 16 16 16 ...
 $ Variable      : Factor w/ 19 levels "Branch","CrownWt",..: 5 5 5 5 5 5 5 5 5 5 ...
 $ ExpUnitCode   : Factor w/ 199 levels "Iversen_8WaterdryGs_1Rt_1",..: 34 34 34 34 34 35 35 35 36 36 ...
 $ Collection    : Factor w/ 5 levels "1997_2001","2000_2002",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Experiment.x  : Factor w/ 11 levels "Lincoln1997",..: 1 1 1 1 1 1 1 1 2 2 ...
 $ Water.x       : Factor w/ 2 levels "dry","irr": 2 2 2 2 2 2 2 2 2 2 ...
 $ Defoliation.x : Factor w/ 2 levels "HH","LL": 2 2 2 2 2 2 2 2 2 2 ...
 $ SowingDate.x  : Factor w/ 12 levels "no","No","SD1",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ FD.x          : Factor w/ 3 levels "FD10","FD2","FD5": 3 3 3 3 3 3 3 3 3 3 ...
 $ Period        : Factor w/ 16 levels "00_01","01_02",..: 14 14 14 14 14 14 14 14 14 14 ...
 $ GrowthSeason.x: int  2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation.x    : int  2 2 2 2 2 3 3 3 4 4 ...
 $ StartDate     : Date, format: "1997-10-07" "1997-10-07" "1997-10-07" ...
 $ MidDate       : Date, format: "1997-10-28" "1997-10-28" "1997-10-28" ...
 $ FinishDate    : Date, format: "1997-11-19" "1997-11-19" "1997-11-19" ...
 $ Interval      : int  16 21 27 34 41 19 28 33 22 30 ...
 $ VariableUnits : Factor w/ 7 levels "%","cm","fractio0l",..: 7 7 7 7 7 7 7 7 7 7 ...
 $ Time          : Factor w/ 1 level "12:00:00": 1 1 1 1 1 1 1 1 1 1 ...
 $ Observed      : num  62.7 146.7 320.7 436.7 564.3 ...
 $ StdDEV        : num  0 0 0 0 0 0 0 0 0 0 ...
 $ ExperimentID  : Factor w/ 5 levels "E1","E2","E3",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ TreatmentID   : Factor w/ 20 levels "DLL","DLLS1",..: 13 13 13 13 13 13 13 13 13 13 ...
 $ ID            : Factor w/ 25 levels "E1DLL","E1ILL",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ GrowthSeason1 : Factor w/ 6 levels "Gs_1","Gs_2",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation1     : Factor w/ 7 levels "Rt_1","Rt_2",..: 2 2 2 2 2 3 3 3 4 4 ...
 $ Clock.Today1  : POSIXct, format: "1997-10-23 12:00:00" "1997-10-28 12:00:00" "1997-11-03 12:00:00" ...
 $ GrowthSeason2 : Factor w/ 18 levels "Y1(96_97)","Y2(97_98)",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation2     : Factor w/ 8 levels "R1","R2","R3",..: 2 2 2 2 2 3 3 3 4 4 ...
 $ year          : int  1997 1997 1997 1997 1997 1997 1997 1997 1998 1998 ...
 $ day           : int  296 301 307 314 321 343 352 357 15 23 ...
 $ rain          : num  0 0.7 0 0 0 0 0 0 0 0 ...
 $ maxt          : num  15.1 24.3 26 12 18.5 19.4 28 31.9 31.4 25.1 ...
 $ mint          : num  8.8 6.9 5.8 4.7 9.6 8 17 14.1 14.2 15.6 ...
 $ mean          : num  12 15.6 15.9 8.4 14.1 13.7 22.5 23 22.8 20.4 ...
 $ radn          : num  20.2 15.6 26.2 26 22.5 30.7 21.6 19.7 22.1 16 ...
 $ wind          : num  4.3 2.9 5.6 5.7 5.8 4.2 6.1 4.9 7.8 3.9 ...
 $ vp            : num  10.8 13.1 11.5 7.9 10.6 12.3 12.7 16.1 14.2 17.4 ...
 $ Pp            : num  14.6 14.9 15.2 15.5 15.8 ...
 $ Tb            : int  1 1 1 1 1 1 1 1 1 1 ...
 $ TTbeta        : num  2.652 8.148 9.211 0.944 4.723 ...
 $ Tbb           : int  1 1 1 1 1 1 1 1 1 1 ...
 $ TTbroken      : num  7.87 11.44 11.84 5.3 9.66 ...
 $ TbF           : int  1 1 1 1 1 1 1 1 1 1 ...
 $ TTfick        : num  9.49 12.74 13.02 6.4 11.33 ...
 $ ExpName       : Factor w/ 338 levels "Iversen_121DefoliationHHFDFD10Gs_1Rt_2",..: 171 171 171 171 171 172 172 172 173 173 ...
 $ Experiment.y  : Factor w/ 6 levels "Lincoln1997",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Water.y       : Factor w/ 2 levels "dry","irr": 2 2 2 2 2 2 2 2 2 2 ...
 $ Defoliation.y : Factor w/ 5 levels "HH","LL","LS",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ SowingDate.y  : Factor w/ 12 levels "no","No","SD1",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ FD.y          : Factor w/ 3 levels "FD10","FD2","FD5": 3 3 3 3 3 3 3 3 3 3 ...
 $ GrowthSeason.y: Factor w/ 6 levels "Gs_1","Gs_2",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation.y    : Factor w/ 10 levels "Rt_1","Rt_10",..: 3 3 3 3 3 4 4 4 5 5 ...
 $ Tt_beta_sum   : num  69.7 96.2 141.7 172.5 217.7 ...
 $ Tt_fick_sum   : num  166 220 295 363 447 ...
 $ Tt_broken_sum : num  142 189 256 315 388 ...
 $ Ppm           : num  14.9 14.9 14.9 14.9 14.9 ...
 $ Tmean         : num  13.2 13.2 13.2 13.2 13.2 ...
 $ GrowthRotation: Factor w/ 36 levels "11","12","13",..: 9 9 9 9 9 10 10 10 11 11 ...
 $ Predicted     : num  182 249 350 438 549 ...
mergedf %>%
    dplyr::filter(Variable== "Height") %>% 
  ggplot(aes(x=Observed, y= Predicted, 
          colour= factor(Name))) +
  geom_point(size=2)+theme_bw()+
  geom_smooth(method = "lm", se = TRUE, linetype = 1, colour="darkgrey") +
  geom_abline(intercept = 0, slope = 1) +
  coord_fixed(ratio = 1)+
  ggtitle("Plant height")+
  facet_wrap(~ID, ncol = 4)+
  theme(legend.title=element_blank(),legend.position = "blank")+xlab("Observed")+ylab("Predicted")+
  mytheme2

  
  ggsave("D:/R/Pictures/Height/predicted.png", width=8, height=6, dpi=500)

2002-2004

mergedf
summary(mergedf)
  Clock.Today                                     Name           Variable  
 Min.   :1997-10-23   Iversen_121DefoliationLLFDFD5 :107   Height    :407  
 1st Qu.:2001-02-19   Iversen_91DefoliationLL       :107   Branch    :  0  
 Median :2002-10-21   Iversen_8Waterirr             : 68   CrownWt   :  0  
 Mean   :2005-09-06   Iversen_9SowingDateSD1Waterirr: 67   Fraction  :  0  
 3rd Qu.:2015-02-03   Iversen_9SowingDateSD2Waterirr: 25   HardStemWt:  0  
 Max.   :2017-12-29   Iversen_9SowingDateSD3Waterirr: 18   LAI       :  0  
                      (Other)                       : 15   (Other)   :  0  
                                 ExpUnitCode      Collection       Experiment.x Water.x   Defoliation.x
 Iversen_9SowingDateSD2WaterirrGs_1Rt_1: 14   1997_2001: 68   Lincoln2000:131   dry:  0   HH:  0       
 Iversen_9SowingDateSD1WaterirrGs_1Rt_1: 12   2000_2002:125   Lincoln2015:107   irr:407   LL:407       
 Iversen_9SowingDateSD3WaterirrGs_1Rt_1: 11   2002_2004:107   Lincoln2003: 54                          
 Iversen_9SowingDateSD4WaterirrGs_1Rt_1: 11   2010_2012:  0   Lincoln2001: 35                          
 Iversen_8WaterirrGs_5Rt_1             : 10   2014_2018:107   Lincoln2004: 31                          
 Iversen_91DefoliationLLGs_2Rt_1       : 10                   Lincoln2002: 22                          
 (Other)                               :339                   (Other)    : 27                          
  SowingDate.x   FD.x         Period    GrowthSeason.x    Rotation.x      StartDate         
 No     :175   FD10:  0   00_01  :128   Min.   :1.000   Min.   :1.000   Min.   :1997-10-07  
 no     :107   FD2 :  0   02_03  : 52   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:2001-01-24  
 SD1    : 67   FD5 :407   03_04  : 48   Median :2.000   Median :3.000   Median :2002-10-06  
 SD2    : 25              16_17  : 39   Mean   :2.101   Mean   :3.098   Mean   :2005-08-05  
 SD3    : 18              01_02  : 38   3rd Qu.:3.000   3rd Qu.:5.000   3rd Qu.:2015-01-30  
 SD4    : 15              15_16  : 35   Max.   :5.000   Max.   :7.000   Max.   :2017-12-04  
 (Other):  0              (Other): 67                                                       
    MidDate             FinishDate            Interval        VariableUnits       Time        Observed     
 Min.   :1997-10-28   Min.   :1997-11-19   Min.   :  0.00   %        :  0   12:00:00:407   Min.   :  0.00  
 1st Qu.:2001-02-13   1st Qu.:2001-03-20   1st Qu.: 14.50   cm       :232                  1st Qu.: 61.75  
 Median :2002-10-26   Median :2002-11-16   Median : 28.00   fractio0l:  0                  Median :185.00  
 Mean   :2005-09-03   Mean   :2005-10-03   Mean   : 32.16   Fraction :  0                  Mean   :218.38  
 3rd Qu.:2015-02-19   3rd Qu.:2015-03-11   3rd Qu.: 40.50   kg/ha    :  0                  3rd Qu.:360.00  
 Max.   :2017-12-25   Max.   :2018-01-15   Max.   :116.00   m2/m2    :  0                  Max.   :798.00  
                                                            mm       :175                                  
     StdDEV       ExperimentID  TreatmentID        ID      GrowthSeason1 Rotation1 
 Min.   : 0.000   E1: 68       ILL    :175   E3ILL  :107   Gs_1:160      Rt_1:112  
 1st Qu.: 0.000   E2:125       ILLF5  :107   E5ILLF5:107   Gs_2:140      Rt_2: 80  
 Median : 3.107   E3:107       ILLS1  : 67   E1ILL  : 68   Gs_3: 54      Rt_3: 58  
 Mean   :12.001   E4:  0       ILLS2  : 25   E2ILLS1: 67   Gs_4: 12      Rt_4: 50  
 3rd Qu.:16.955   E5:107       ILLS3  : 18   E2ILLS2: 25   Gs_5: 41      Rt_5: 46  
 Max.   :91.520                ILLS4  : 15   E2ILLS3: 18   Gs_6:  0      Rt_6: 42  
 NA's   :228                   (Other):  0   (Other): 15                 Rt_7: 19  
  Clock.Today1                   GrowthSeason2   Rotation2       year           day             rain        
 Min.   :1997-10-23 12:00:00   Y1(00_01): 87   R2     :80   Min.   :1997   Min.   :  1.0   Min.   : 0.0000  
 1st Qu.:2001-02-19 12:00:00   Y1(02_03): 52   S1     :77   1st Qu.:2001   1st Qu.: 63.0   1st Qu.: 0.0000  
 Median :2002-10-21 12:00:00   Y2(03_04): 48   R3     :58   Median :2002   Median :139.0   Median : 0.0000  
 Mean   :2005-09-06 20:55:25   Y5(00_01): 41   R4     :50   Mean   :2005   Mean   :170.8   Mean   : 0.8781  
 3rd Qu.:2015-02-03 12:00:00   Y3(16_17): 39   R5     :46   3rd Qu.:2015   3rd Qu.:292.0   3rd Qu.: 0.0000  
 Max.   :2017-12-29 12:00:00   Y2(01_02): 38   R6     :42   Max.   :2017   Max.   :365.0   Max.   :31.8000  
                               (Other)  :102   (Other):54                                                   
      maxt            mint             mean            radn           wind             vp       
 Min.   : 7.90   Min.   :-4.900   Min.   : 2.55   Min.   : 1.5   Min.   :0.700   Min.   : 5.10  
 1st Qu.:15.25   1st Qu.: 4.350   1st Qu.:10.40   1st Qu.: 9.7   1st Qu.:2.900   1st Qu.:10.00  
 Median :19.00   Median : 8.700   Median :13.20   Median :16.1   Median :3.900   Median :11.40  
 Mean   :19.16   Mean   : 7.842   Mean   :13.47   Mean   :16.7   Mean   :3.991   Mean   :11.78  
 3rd Qu.:22.15   3rd Qu.:11.300   3rd Qu.:16.50   3rd Qu.:22.6   3rd Qu.:4.900   3rd Qu.:13.75  
 Max.   :33.80   Max.   :20.600   Max.   :26.20   Max.   :33.4   Max.   :9.300   Max.   :22.00  
                                                                                                
       Pp              Tb        TTbeta            Tbb       TTbroken           TbF        TTfick      
 Min.   :10.02   Min.   :1   Min.   : 0.128   Min.   :1   Min.   : 1.841   Min.   :1   Min.   : 2.222  
 1st Qu.:12.21   1st Qu.:1   1st Qu.: 2.242   1st Qu.:1   1st Qu.: 6.819   1st Qu.:1   1st Qu.: 8.144  
 Median :14.27   Median :1   Median : 4.104   Median :1   Median : 8.972   Median :1   Median :10.611  
 Mean   :13.92   Mean   :1   Mean   : 5.802   Mean   :1   Mean   : 9.526   Mean   :1   Mean   :10.869  
 3rd Qu.:15.82   3rd Qu.:1   3rd Qu.: 8.081   3rd Qu.:1   3rd Qu.:12.019   3rd Qu.:1   3rd Qu.:13.566  
 Max.   :16.65   Max.   :1   Max.   :23.343   Max.   :1   Max.   :20.258   Max.   :1   Max.   :20.813  
                                                                                                       
                                   ExpName         Experiment.y Water.y   Defoliation.y  SowingDate.y
 Iversen_9SowingDateSD2WaterirrGs_1Rt_1: 14   Lincoln1997: 68   dry:  0   HH:  0        No     :175  
 Iversen_9SowingDateSD1WaterirrGs_1Rt_1: 12   Lincoln2000:110   irr:407   LL:407        no     :107  
 Iversen_9SowingDateSD3WaterirrGs_1Rt_1: 11   Lincoln2001: 15             LS:  0        SD1    : 67  
 Iversen_9SowingDateSD4WaterirrGs_1Rt_1: 11   Lincoln2002:107             SL:  0        SD2    : 25  
 Iversen_8WaterirrGs_5Rt_1             : 10   Lincoln2010:  0             SS:  0        SD3    : 18  
 Iversen_91DefoliationLLGs_2Rt_1       : 10   Lincoln2015:107                           SD4    : 15  
 (Other)                               :339                                             (Other):  0  
   FD.y     GrowthSeason.y   Rotation.y   Tt_beta_sum        Tt_fick_sum       Tt_broken_sum     
 FD10:  0   Gs_1:160       Rt_1   :112   Min.   :  0.2834   Min.   :   4.022   Min.   :   3.333  
 FD2 :  0   Gs_2:140       Rt_2   : 80   1st Qu.: 60.6597   1st Qu.: 164.966   1st Qu.: 142.557  
 FD5 :407   Gs_3: 54       Rt_3   : 58   Median :123.1457   Median : 299.055   Median : 258.135  
            Gs_4: 12       Rt_4   : 50   Mean   :156.6504   Mean   : 325.886   Mean   : 282.948  
            Gs_5: 41       Rt_5   : 46   3rd Qu.:217.9675   3rd Qu.: 453.067   3rd Qu.: 392.975  
            Gs_6:  0       Rt_6   : 42   Max.   :722.6708   Max.   :1186.654   Max.   :1051.876  
                           (Other): 19                                                           
      Ppm            Tmean        GrowthRotation   Predicted    
 Min.   :10.25   Min.   : 7.024   11     : 60    Min.   :  0.0  
 1st Qu.:11.99   1st Qu.:10.974   12     : 38    1st Qu.:102.5  
 Median :14.48   Median :13.963   21     : 24    Median :221.6  
 Mean   :13.83   Mean   :13.215   26     : 24    Mean   :264.3  
 3rd Qu.:15.87   3rd Qu.:15.723   13     : 23    3rd Qu.:398.3  
 Max.   :16.55   Max.   :19.327   22     : 23    Max.   :858.6  
                                  (Other):215                   
str(mergedf)
'data.frame':   407 obs. of  60 variables:
 $ Clock.Today   : Date, format: "1997-10-23" "1997-10-28" "1997-11-03" ...
 $ Name          : Factor w/ 25 levels "Iversen_121DefoliationHHFDFD5",..: 16 16 16 16 16 16 16 16 16 16 ...
 $ Variable      : Factor w/ 19 levels "Branch","CrownWt",..: 5 5 5 5 5 5 5 5 5 5 ...
 $ ExpUnitCode   : Factor w/ 199 levels "Iversen_8WaterdryGs_1Rt_1",..: 34 34 34 34 34 35 35 35 36 36 ...
 $ Collection    : Factor w/ 5 levels "1997_2001","2000_2002",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Experiment.x  : Factor w/ 11 levels "Lincoln1997",..: 1 1 1 1 1 1 1 1 2 2 ...
 $ Water.x       : Factor w/ 2 levels "dry","irr": 2 2 2 2 2 2 2 2 2 2 ...
 $ Defoliation.x : Factor w/ 2 levels "HH","LL": 2 2 2 2 2 2 2 2 2 2 ...
 $ SowingDate.x  : Factor w/ 12 levels "no","No","SD1",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ FD.x          : Factor w/ 3 levels "FD10","FD2","FD5": 3 3 3 3 3 3 3 3 3 3 ...
 $ Period        : Factor w/ 16 levels "00_01","01_02",..: 14 14 14 14 14 14 14 14 14 14 ...
 $ GrowthSeason.x: int  2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation.x    : int  2 2 2 2 2 3 3 3 4 4 ...
 $ StartDate     : Date, format: "1997-10-07" "1997-10-07" "1997-10-07" ...
 $ MidDate       : Date, format: "1997-10-28" "1997-10-28" "1997-10-28" ...
 $ FinishDate    : Date, format: "1997-11-19" "1997-11-19" "1997-11-19" ...
 $ Interval      : int  16 21 27 34 41 19 28 33 22 30 ...
 $ VariableUnits : Factor w/ 7 levels "%","cm","fractio0l",..: 7 7 7 7 7 7 7 7 7 7 ...
 $ Time          : Factor w/ 1 level "12:00:00": 1 1 1 1 1 1 1 1 1 1 ...
 $ Observed      : num  62.7 146.7 320.7 436.7 564.3 ...
 $ StdDEV        : num  0 0 0 0 0 0 0 0 0 0 ...
 $ ExperimentID  : Factor w/ 5 levels "E1","E2","E3",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ TreatmentID   : Factor w/ 20 levels "DLL","DLLS1",..: 13 13 13 13 13 13 13 13 13 13 ...
 $ ID            : Factor w/ 25 levels "E1DLL","E1ILL",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ GrowthSeason1 : Factor w/ 6 levels "Gs_1","Gs_2",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation1     : Factor w/ 7 levels "Rt_1","Rt_2",..: 2 2 2 2 2 3 3 3 4 4 ...
 $ Clock.Today1  : POSIXct, format: "1997-10-23 12:00:00" "1997-10-28 12:00:00" "1997-11-03 12:00:00" ...
 $ GrowthSeason2 : Factor w/ 18 levels "Y1(96_97)","Y2(97_98)",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation2     : Factor w/ 8 levels "R1","R2","R3",..: 2 2 2 2 2 3 3 3 4 4 ...
 $ year          : int  1997 1997 1997 1997 1997 1997 1997 1997 1998 1998 ...
 $ day           : int  296 301 307 314 321 343 352 357 15 23 ...
 $ rain          : num  0 0.7 0 0 0 0 0 0 0 0 ...
 $ maxt          : num  15.1 24.3 26 12 18.5 19.4 28 31.9 31.4 25.1 ...
 $ mint          : num  8.8 6.9 5.8 4.7 9.6 8 17 14.1 14.2 15.6 ...
 $ mean          : num  12 15.6 15.9 8.4 14.1 13.7 22.5 23 22.8 20.4 ...
 $ radn          : num  20.2 15.6 26.2 26 22.5 30.7 21.6 19.7 22.1 16 ...
 $ wind          : num  4.3 2.9 5.6 5.7 5.8 4.2 6.1 4.9 7.8 3.9 ...
 $ vp            : num  10.8 13.1 11.5 7.9 10.6 12.3 12.7 16.1 14.2 17.4 ...
 $ Pp            : num  14.6 14.9 15.2 15.5 15.8 ...
 $ Tb            : int  1 1 1 1 1 1 1 1 1 1 ...
 $ TTbeta        : num  2.652 8.148 9.211 0.944 4.723 ...
 $ Tbb           : int  1 1 1 1 1 1 1 1 1 1 ...
 $ TTbroken      : num  7.87 11.44 11.84 5.3 9.66 ...
 $ TbF           : int  1 1 1 1 1 1 1 1 1 1 ...
 $ TTfick        : num  9.49 12.74 13.02 6.4 11.33 ...
 $ ExpName       : Factor w/ 338 levels "Iversen_121DefoliationHHFDFD10Gs_1Rt_2",..: 171 171 171 171 171 172 172 172 173 173 ...
 $ Experiment.y  : Factor w/ 6 levels "Lincoln1997",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Water.y       : Factor w/ 2 levels "dry","irr": 2 2 2 2 2 2 2 2 2 2 ...
 $ Defoliation.y : Factor w/ 5 levels "HH","LL","LS",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ SowingDate.y  : Factor w/ 12 levels "no","No","SD1",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ FD.y          : Factor w/ 3 levels "FD10","FD2","FD5": 3 3 3 3 3 3 3 3 3 3 ...
 $ GrowthSeason.y: Factor w/ 6 levels "Gs_1","Gs_2",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation.y    : Factor w/ 10 levels "Rt_1","Rt_10",..: 3 3 3 3 3 4 4 4 5 5 ...
 $ Tt_beta_sum   : num  69.7 96.2 141.7 172.5 217.7 ...
 $ Tt_fick_sum   : num  166 220 295 363 447 ...
 $ Tt_broken_sum : num  142 189 256 315 388 ...
 $ Ppm           : num  14.9 14.9 14.9 14.9 14.9 ...
 $ Tmean         : num  13.2 13.2 13.2 13.2 13.2 ...
 $ GrowthRotation: Factor w/ 36 levels "11","12","13",..: 9 9 9 9 9 10 10 10 11 11 ...
 $ Predicted     : num  182 249 350 438 549 ...
mergedf %>%
    dplyr::filter(Collection=="2002_2004")%>%
  ggplot(aes(x=Observed, y= Predicted, 
          colour= factor(Name))) +
  geom_point(size=3)+theme_bw()+
  geom_smooth(method = "lm", se = TRUE, linetype = 1, colour="darkgrey") +
  geom_abline(intercept = 0, slope = 1) +
  coord_fixed(ratio = 1)+
  ggtitle("Plant height")+
  facet_grid(GrowthSeason.x~Rotation.x)+
  theme(legend.title=element_blank(),legend.position = "blank")+xlab("Observed")+ylab("Predicted")+
  theme(axis.title.x=element_text(face="bold",colour="black",size = 12))+
  theme(axis.title.y=element_text(face="bold",colour="black",size = 12))

2000-2002

mergedf
summary(mergedf)
  Clock.Today                                     Name           Variable  
 Min.   :1997-10-23   Iversen_121DefoliationLLFDFD5 :107   Height    :407  
 1st Qu.:2001-02-19   Iversen_91DefoliationLL       :107   Branch    :  0  
 Median :2002-10-21   Iversen_8Waterirr             : 68   CrownWt   :  0  
 Mean   :2005-09-06   Iversen_9SowingDateSD1Waterirr: 67   Fraction  :  0  
 3rd Qu.:2015-02-03   Iversen_9SowingDateSD2Waterirr: 25   HardStemWt:  0  
 Max.   :2017-12-29   Iversen_9SowingDateSD3Waterirr: 18   LAI       :  0  
                      (Other)                       : 15   (Other)   :  0  
                                 ExpUnitCode      Collection       Experiment.x Water.x   Defoliation.x
 Iversen_9SowingDateSD2WaterirrGs_1Rt_1: 14   1997_2001: 68   Lincoln2000:131   dry:  0   HH:  0       
 Iversen_9SowingDateSD1WaterirrGs_1Rt_1: 12   2000_2002:125   Lincoln2015:107   irr:407   LL:407       
 Iversen_9SowingDateSD3WaterirrGs_1Rt_1: 11   2002_2004:107   Lincoln2003: 54                          
 Iversen_9SowingDateSD4WaterirrGs_1Rt_1: 11   2010_2012:  0   Lincoln2001: 35                          
 Iversen_8WaterirrGs_5Rt_1             : 10   2014_2018:107   Lincoln2004: 31                          
 Iversen_91DefoliationLLGs_2Rt_1       : 10                   Lincoln2002: 22                          
 (Other)                               :339                   (Other)    : 27                          
  SowingDate.x   FD.x         Period    GrowthSeason.x    Rotation.x      StartDate         
 No     :175   FD10:  0   00_01  :128   Min.   :1.000   Min.   :1.000   Min.   :1997-10-07  
 no     :107   FD2 :  0   02_03  : 52   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:2001-01-24  
 SD1    : 67   FD5 :407   03_04  : 48   Median :2.000   Median :3.000   Median :2002-10-06  
 SD2    : 25              16_17  : 39   Mean   :2.101   Mean   :3.098   Mean   :2005-08-05  
 SD3    : 18              01_02  : 38   3rd Qu.:3.000   3rd Qu.:5.000   3rd Qu.:2015-01-30  
 SD4    : 15              15_16  : 35   Max.   :5.000   Max.   :7.000   Max.   :2017-12-04  
 (Other):  0              (Other): 67                                                       
    MidDate             FinishDate            Interval        VariableUnits       Time        Observed     
 Min.   :1997-10-28   Min.   :1997-11-19   Min.   :  0.00   %        :  0   12:00:00:407   Min.   :  0.00  
 1st Qu.:2001-02-13   1st Qu.:2001-03-20   1st Qu.: 14.50   cm       :232                  1st Qu.: 61.75  
 Median :2002-10-26   Median :2002-11-16   Median : 28.00   fractio0l:  0                  Median :185.00  
 Mean   :2005-09-03   Mean   :2005-10-03   Mean   : 32.16   Fraction :  0                  Mean   :218.38  
 3rd Qu.:2015-02-19   3rd Qu.:2015-03-11   3rd Qu.: 40.50   kg/ha    :  0                  3rd Qu.:360.00  
 Max.   :2017-12-25   Max.   :2018-01-15   Max.   :116.00   m2/m2    :  0                  Max.   :798.00  
                                                            mm       :175                                  
     StdDEV       ExperimentID  TreatmentID        ID      GrowthSeason1 Rotation1 
 Min.   : 0.000   E1: 68       ILL    :175   E3ILL  :107   Gs_1:160      Rt_1:112  
 1st Qu.: 0.000   E2:125       ILLF5  :107   E5ILLF5:107   Gs_2:140      Rt_2: 80  
 Median : 3.107   E3:107       ILLS1  : 67   E1ILL  : 68   Gs_3: 54      Rt_3: 58  
 Mean   :12.001   E4:  0       ILLS2  : 25   E2ILLS1: 67   Gs_4: 12      Rt_4: 50  
 3rd Qu.:16.955   E5:107       ILLS3  : 18   E2ILLS2: 25   Gs_5: 41      Rt_5: 46  
 Max.   :91.520                ILLS4  : 15   E2ILLS3: 18   Gs_6:  0      Rt_6: 42  
 NA's   :228                   (Other):  0   (Other): 15                 Rt_7: 19  
  Clock.Today1                   GrowthSeason2   Rotation2       year           day             rain        
 Min.   :1997-10-23 12:00:00   Y1(00_01): 87   R2     :80   Min.   :1997   Min.   :  1.0   Min.   : 0.0000  
 1st Qu.:2001-02-19 12:00:00   Y1(02_03): 52   S1     :77   1st Qu.:2001   1st Qu.: 63.0   1st Qu.: 0.0000  
 Median :2002-10-21 12:00:00   Y2(03_04): 48   R3     :58   Median :2002   Median :139.0   Median : 0.0000  
 Mean   :2005-09-06 20:55:25   Y5(00_01): 41   R4     :50   Mean   :2005   Mean   :170.8   Mean   : 0.8781  
 3rd Qu.:2015-02-03 12:00:00   Y3(16_17): 39   R5     :46   3rd Qu.:2015   3rd Qu.:292.0   3rd Qu.: 0.0000  
 Max.   :2017-12-29 12:00:00   Y2(01_02): 38   R6     :42   Max.   :2017   Max.   :365.0   Max.   :31.8000  
                               (Other)  :102   (Other):54                                                   
      maxt            mint             mean            radn           wind             vp       
 Min.   : 7.90   Min.   :-4.900   Min.   : 2.55   Min.   : 1.5   Min.   :0.700   Min.   : 5.10  
 1st Qu.:15.25   1st Qu.: 4.350   1st Qu.:10.40   1st Qu.: 9.7   1st Qu.:2.900   1st Qu.:10.00  
 Median :19.00   Median : 8.700   Median :13.20   Median :16.1   Median :3.900   Median :11.40  
 Mean   :19.16   Mean   : 7.842   Mean   :13.47   Mean   :16.7   Mean   :3.991   Mean   :11.78  
 3rd Qu.:22.15   3rd Qu.:11.300   3rd Qu.:16.50   3rd Qu.:22.6   3rd Qu.:4.900   3rd Qu.:13.75  
 Max.   :33.80   Max.   :20.600   Max.   :26.20   Max.   :33.4   Max.   :9.300   Max.   :22.00  
                                                                                                
       Pp              Tb        TTbeta            Tbb       TTbroken           TbF        TTfick      
 Min.   :10.02   Min.   :1   Min.   : 0.128   Min.   :1   Min.   : 1.841   Min.   :1   Min.   : 2.222  
 1st Qu.:12.21   1st Qu.:1   1st Qu.: 2.242   1st Qu.:1   1st Qu.: 6.819   1st Qu.:1   1st Qu.: 8.144  
 Median :14.27   Median :1   Median : 4.104   Median :1   Median : 8.972   Median :1   Median :10.611  
 Mean   :13.92   Mean   :1   Mean   : 5.802   Mean   :1   Mean   : 9.526   Mean   :1   Mean   :10.869  
 3rd Qu.:15.82   3rd Qu.:1   3rd Qu.: 8.081   3rd Qu.:1   3rd Qu.:12.019   3rd Qu.:1   3rd Qu.:13.566  
 Max.   :16.65   Max.   :1   Max.   :23.343   Max.   :1   Max.   :20.258   Max.   :1   Max.   :20.813  
                                                                                                       
                                   ExpName         Experiment.y Water.y   Defoliation.y  SowingDate.y
 Iversen_9SowingDateSD2WaterirrGs_1Rt_1: 14   Lincoln1997: 68   dry:  0   HH:  0        No     :175  
 Iversen_9SowingDateSD1WaterirrGs_1Rt_1: 12   Lincoln2000:110   irr:407   LL:407        no     :107  
 Iversen_9SowingDateSD3WaterirrGs_1Rt_1: 11   Lincoln2001: 15             LS:  0        SD1    : 67  
 Iversen_9SowingDateSD4WaterirrGs_1Rt_1: 11   Lincoln2002:107             SL:  0        SD2    : 25  
 Iversen_8WaterirrGs_5Rt_1             : 10   Lincoln2010:  0             SS:  0        SD3    : 18  
 Iversen_91DefoliationLLGs_2Rt_1       : 10   Lincoln2015:107                           SD4    : 15  
 (Other)                               :339                                             (Other):  0  
   FD.y     GrowthSeason.y   Rotation.y   Tt_beta_sum        Tt_fick_sum       Tt_broken_sum     
 FD10:  0   Gs_1:160       Rt_1   :112   Min.   :  0.2834   Min.   :   4.022   Min.   :   3.333  
 FD2 :  0   Gs_2:140       Rt_2   : 80   1st Qu.: 60.6597   1st Qu.: 164.966   1st Qu.: 142.557  
 FD5 :407   Gs_3: 54       Rt_3   : 58   Median :123.1457   Median : 299.055   Median : 258.135  
            Gs_4: 12       Rt_4   : 50   Mean   :156.6504   Mean   : 325.886   Mean   : 282.948  
            Gs_5: 41       Rt_5   : 46   3rd Qu.:217.9675   3rd Qu.: 453.067   3rd Qu.: 392.975  
            Gs_6:  0       Rt_6   : 42   Max.   :722.6708   Max.   :1186.654   Max.   :1051.876  
                           (Other): 19                                                           
      Ppm            Tmean        GrowthRotation   Predicted    
 Min.   :10.25   Min.   : 7.024   11     : 60    Min.   :  0.0  
 1st Qu.:11.99   1st Qu.:10.974   12     : 38    1st Qu.:102.5  
 Median :14.48   Median :13.963   21     : 24    Median :221.6  
 Mean   :13.83   Mean   :13.215   26     : 24    Mean   :264.3  
 3rd Qu.:15.87   3rd Qu.:15.723   13     : 23    3rd Qu.:398.3  
 Max.   :16.55   Max.   :19.327   22     : 23    Max.   :858.6  
                                  (Other):215                   
str(mergedf)
'data.frame':   407 obs. of  60 variables:
 $ Clock.Today   : Date, format: "1997-10-23" "1997-10-28" "1997-11-03" ...
 $ Name          : Factor w/ 25 levels "Iversen_121DefoliationHHFDFD5",..: 16 16 16 16 16 16 16 16 16 16 ...
 $ Variable      : Factor w/ 19 levels "Branch","CrownWt",..: 5 5 5 5 5 5 5 5 5 5 ...
 $ ExpUnitCode   : Factor w/ 199 levels "Iversen_8WaterdryGs_1Rt_1",..: 34 34 34 34 34 35 35 35 36 36 ...
 $ Collection    : Factor w/ 5 levels "1997_2001","2000_2002",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Experiment.x  : Factor w/ 11 levels "Lincoln1997",..: 1 1 1 1 1 1 1 1 2 2 ...
 $ Water.x       : Factor w/ 2 levels "dry","irr": 2 2 2 2 2 2 2 2 2 2 ...
 $ Defoliation.x : Factor w/ 2 levels "HH","LL": 2 2 2 2 2 2 2 2 2 2 ...
 $ SowingDate.x  : Factor w/ 12 levels "no","No","SD1",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ FD.x          : Factor w/ 3 levels "FD10","FD2","FD5": 3 3 3 3 3 3 3 3 3 3 ...
 $ Period        : Factor w/ 16 levels "00_01","01_02",..: 14 14 14 14 14 14 14 14 14 14 ...
 $ GrowthSeason.x: int  2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation.x    : int  2 2 2 2 2 3 3 3 4 4 ...
 $ StartDate     : Date, format: "1997-10-07" "1997-10-07" "1997-10-07" ...
 $ MidDate       : Date, format: "1997-10-28" "1997-10-28" "1997-10-28" ...
 $ FinishDate    : Date, format: "1997-11-19" "1997-11-19" "1997-11-19" ...
 $ Interval      : int  16 21 27 34 41 19 28 33 22 30 ...
 $ VariableUnits : Factor w/ 7 levels "%","cm","fractio0l",..: 7 7 7 7 7 7 7 7 7 7 ...
 $ Time          : Factor w/ 1 level "12:00:00": 1 1 1 1 1 1 1 1 1 1 ...
 $ Observed      : num  62.7 146.7 320.7 436.7 564.3 ...
 $ StdDEV        : num  0 0 0 0 0 0 0 0 0 0 ...
 $ ExperimentID  : Factor w/ 5 levels "E1","E2","E3",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ TreatmentID   : Factor w/ 20 levels "DLL","DLLS1",..: 13 13 13 13 13 13 13 13 13 13 ...
 $ ID            : Factor w/ 25 levels "E1DLL","E1ILL",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ GrowthSeason1 : Factor w/ 6 levels "Gs_1","Gs_2",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation1     : Factor w/ 7 levels "Rt_1","Rt_2",..: 2 2 2 2 2 3 3 3 4 4 ...
 $ Clock.Today1  : POSIXct, format: "1997-10-23 12:00:00" "1997-10-28 12:00:00" "1997-11-03 12:00:00" ...
 $ GrowthSeason2 : Factor w/ 18 levels "Y1(96_97)","Y2(97_98)",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation2     : Factor w/ 8 levels "R1","R2","R3",..: 2 2 2 2 2 3 3 3 4 4 ...
 $ year          : int  1997 1997 1997 1997 1997 1997 1997 1997 1998 1998 ...
 $ day           : int  296 301 307 314 321 343 352 357 15 23 ...
 $ rain          : num  0 0.7 0 0 0 0 0 0 0 0 ...
 $ maxt          : num  15.1 24.3 26 12 18.5 19.4 28 31.9 31.4 25.1 ...
 $ mint          : num  8.8 6.9 5.8 4.7 9.6 8 17 14.1 14.2 15.6 ...
 $ mean          : num  12 15.6 15.9 8.4 14.1 13.7 22.5 23 22.8 20.4 ...
 $ radn          : num  20.2 15.6 26.2 26 22.5 30.7 21.6 19.7 22.1 16 ...
 $ wind          : num  4.3 2.9 5.6 5.7 5.8 4.2 6.1 4.9 7.8 3.9 ...
 $ vp            : num  10.8 13.1 11.5 7.9 10.6 12.3 12.7 16.1 14.2 17.4 ...
 $ Pp            : num  14.6 14.9 15.2 15.5 15.8 ...
 $ Tb            : int  1 1 1 1 1 1 1 1 1 1 ...
 $ TTbeta        : num  2.652 8.148 9.211 0.944 4.723 ...
 $ Tbb           : int  1 1 1 1 1 1 1 1 1 1 ...
 $ TTbroken      : num  7.87 11.44 11.84 5.3 9.66 ...
 $ TbF           : int  1 1 1 1 1 1 1 1 1 1 ...
 $ TTfick        : num  9.49 12.74 13.02 6.4 11.33 ...
 $ ExpName       : Factor w/ 338 levels "Iversen_121DefoliationHHFDFD10Gs_1Rt_2",..: 171 171 171 171 171 172 172 172 173 173 ...
 $ Experiment.y  : Factor w/ 6 levels "Lincoln1997",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Water.y       : Factor w/ 2 levels "dry","irr": 2 2 2 2 2 2 2 2 2 2 ...
 $ Defoliation.y : Factor w/ 5 levels "HH","LL","LS",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ SowingDate.y  : Factor w/ 12 levels "no","No","SD1",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ FD.y          : Factor w/ 3 levels "FD10","FD2","FD5": 3 3 3 3 3 3 3 3 3 3 ...
 $ GrowthSeason.y: Factor w/ 6 levels "Gs_1","Gs_2",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation.y    : Factor w/ 10 levels "Rt_1","Rt_10",..: 3 3 3 3 3 4 4 4 5 5 ...
 $ Tt_beta_sum   : num  69.7 96.2 141.7 172.5 217.7 ...
 $ Tt_fick_sum   : num  166 220 295 363 447 ...
 $ Tt_broken_sum : num  142 189 256 315 388 ...
 $ Ppm           : num  14.9 14.9 14.9 14.9 14.9 ...
 $ Tmean         : num  13.2 13.2 13.2 13.2 13.2 ...
 $ GrowthRotation: Factor w/ 36 levels "11","12","13",..: 9 9 9 9 9 10 10 10 11 11 ...
 $ Predicted     : num  182 249 350 438 549 ...
mergedf %>%
    dplyr::filter(Collection=="2000_2002")%>%
  ggplot(aes(x=Observed, y= Predicted, 
          colour= factor(Name))) +
  geom_point(size=3)+theme_bw()+
  geom_smooth(method = "lm", se = TRUE, linetype = 1, colour="darkgrey") +
  geom_abline(intercept = 0, slope = 1) +
  coord_fixed(ratio = 1)+
  ggtitle("Height")+
  facet_grid(GrowthSeason.x~Rotation.x)+
  theme(legend.title=element_blank(),legend.position = "blank")+xlab("Observed")+ylab("Predicted")+
  theme(axis.title.x=element_text(face="bold",colour="black",size = 12))+
  theme(axis.title.y=element_text(face="bold",colour="black",size = 12))

mergedf %>%
    dplyr::filter(Collection=="1997_2001")%>%
  ggplot(aes(x=Observed, y= Predicted, 
          colour= factor(Name))) +
  geom_point(size=3)+theme_bw() +
   geom_smooth(method = "lm", se = TRUE, linetype = 1, colour="darkgrey") +
  geom_abline(intercept = 0, slope = 1) +
  coord_fixed(ratio = 1) +
  ggtitle("Plant height")  +
  facet_grid(GrowthSeason.x~Rotation.x)+
  theme(legend.title=element_blank(),legend.position = "blank")+xlab("Observed")+ylab("Predicted")+
  theme(axis.title.x=element_text(face="bold",colour="black",size = 12))+
  theme(axis.title.y=element_text(face="bold",colour="black",size = 12))

RMSE

str(mergedf)
'data.frame':   407 obs. of  60 variables:
 $ Clock.Today   : Date, format: "1997-10-23" "1997-10-28" "1997-11-03" ...
 $ Name          : Factor w/ 25 levels "Iversen_121DefoliationHHFDFD5",..: 16 16 16 16 16 16 16 16 16 16 ...
 $ Variable      : Factor w/ 19 levels "Branch","CrownWt",..: 5 5 5 5 5 5 5 5 5 5 ...
 $ ExpUnitCode   : Factor w/ 199 levels "Iversen_8WaterdryGs_1Rt_1",..: 34 34 34 34 34 35 35 35 36 36 ...
 $ Collection    : Factor w/ 5 levels "1997_2001","2000_2002",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Experiment.x  : Factor w/ 11 levels "Lincoln1997",..: 1 1 1 1 1 1 1 1 2 2 ...
 $ Water.x       : Factor w/ 2 levels "dry","irr": 2 2 2 2 2 2 2 2 2 2 ...
 $ Defoliation.x : Factor w/ 2 levels "HH","LL": 2 2 2 2 2 2 2 2 2 2 ...
 $ SowingDate.x  : Factor w/ 12 levels "no","No","SD1",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ FD.x          : Factor w/ 3 levels "FD10","FD2","FD5": 3 3 3 3 3 3 3 3 3 3 ...
 $ Period        : Factor w/ 16 levels "00_01","01_02",..: 14 14 14 14 14 14 14 14 14 14 ...
 $ GrowthSeason.x: int  2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation.x    : int  2 2 2 2 2 3 3 3 4 4 ...
 $ StartDate     : Date, format: "1997-10-07" "1997-10-07" "1997-10-07" ...
 $ MidDate       : Date, format: "1997-10-28" "1997-10-28" "1997-10-28" ...
 $ FinishDate    : Date, format: "1997-11-19" "1997-11-19" "1997-11-19" ...
 $ Interval      : int  16 21 27 34 41 19 28 33 22 30 ...
 $ VariableUnits : Factor w/ 7 levels "%","cm","fractio0l",..: 7 7 7 7 7 7 7 7 7 7 ...
 $ Time          : Factor w/ 1 level "12:00:00": 1 1 1 1 1 1 1 1 1 1 ...
 $ Observed      : num  62.7 146.7 320.7 436.7 564.3 ...
 $ StdDEV        : num  0 0 0 0 0 0 0 0 0 0 ...
 $ ExperimentID  : Factor w/ 5 levels "E1","E2","E3",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ TreatmentID   : Factor w/ 20 levels "DLL","DLLS1",..: 13 13 13 13 13 13 13 13 13 13 ...
 $ ID            : Factor w/ 25 levels "E1DLL","E1ILL",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ GrowthSeason1 : Factor w/ 6 levels "Gs_1","Gs_2",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation1     : Factor w/ 7 levels "Rt_1","Rt_2",..: 2 2 2 2 2 3 3 3 4 4 ...
 $ Clock.Today1  : POSIXct, format: "1997-10-23 12:00:00" "1997-10-28 12:00:00" "1997-11-03 12:00:00" ...
 $ GrowthSeason2 : Factor w/ 18 levels "Y1(96_97)","Y2(97_98)",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation2     : Factor w/ 8 levels "R1","R2","R3",..: 2 2 2 2 2 3 3 3 4 4 ...
 $ year          : int  1997 1997 1997 1997 1997 1997 1997 1997 1998 1998 ...
 $ day           : int  296 301 307 314 321 343 352 357 15 23 ...
 $ rain          : num  0 0.7 0 0 0 0 0 0 0 0 ...
 $ maxt          : num  15.1 24.3 26 12 18.5 19.4 28 31.9 31.4 25.1 ...
 $ mint          : num  8.8 6.9 5.8 4.7 9.6 8 17 14.1 14.2 15.6 ...
 $ mean          : num  12 15.6 15.9 8.4 14.1 13.7 22.5 23 22.8 20.4 ...
 $ radn          : num  20.2 15.6 26.2 26 22.5 30.7 21.6 19.7 22.1 16 ...
 $ wind          : num  4.3 2.9 5.6 5.7 5.8 4.2 6.1 4.9 7.8 3.9 ...
 $ vp            : num  10.8 13.1 11.5 7.9 10.6 12.3 12.7 16.1 14.2 17.4 ...
 $ Pp            : num  14.6 14.9 15.2 15.5 15.8 ...
 $ Tb            : int  1 1 1 1 1 1 1 1 1 1 ...
 $ TTbeta        : num  2.652 8.148 9.211 0.944 4.723 ...
 $ Tbb           : int  1 1 1 1 1 1 1 1 1 1 ...
 $ TTbroken      : num  7.87 11.44 11.84 5.3 9.66 ...
 $ TbF           : int  1 1 1 1 1 1 1 1 1 1 ...
 $ TTfick        : num  9.49 12.74 13.02 6.4 11.33 ...
 $ ExpName       : Factor w/ 338 levels "Iversen_121DefoliationHHFDFD10Gs_1Rt_2",..: 171 171 171 171 171 172 172 172 173 173 ...
 $ Experiment.y  : Factor w/ 6 levels "Lincoln1997",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Water.y       : Factor w/ 2 levels "dry","irr": 2 2 2 2 2 2 2 2 2 2 ...
 $ Defoliation.y : Factor w/ 5 levels "HH","LL","LS",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ SowingDate.y  : Factor w/ 12 levels "no","No","SD1",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ FD.y          : Factor w/ 3 levels "FD10","FD2","FD5": 3 3 3 3 3 3 3 3 3 3 ...
 $ GrowthSeason.y: Factor w/ 6 levels "Gs_1","Gs_2",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Rotation.y    : Factor w/ 10 levels "Rt_1","Rt_10",..: 3 3 3 3 3 4 4 4 5 5 ...
 $ Tt_beta_sum   : num  69.7 96.2 141.7 172.5 217.7 ...
 $ Tt_fick_sum   : num  166 220 295 363 447 ...
 $ Tt_broken_sum : num  142 189 256 315 388 ...
 $ Ppm           : num  14.9 14.9 14.9 14.9 14.9 ...
 $ Tmean         : num  13.2 13.2 13.2 13.2 13.2 ...
 $ GrowthRotation: Factor w/ 36 levels "11","12","13",..: 9 9 9 9 9 10 10 10 11 11 ...
 $ Predicted     : num  182 249 350 438 549 ...
mergedf %>%
  group_by(ID) %>%
  summarise(
    n = n(),
    r2 = gauchStats(Predicted,Observed)[5],
  #  rmse = round(rmse(Predicted,Observed),0),
    r_rmse = round(rmse(Predicted,Observed)/mean(Observed)*100,1),
    nse = round(NSE(Predicted,Observed),2),
    sb = gauchStats(Predicted,Observed)[1],
  nu = gauchStats(Predicted,Observed)[2],
  lc = gauchStats(Predicted,Observed)[3]
  ) 
# NAR = format(coef(m)[2], digits = 2)
# %>%
#   group_by(Variable,Name) %>%
#   summarise_each(funs(mean))
  
Height ag
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KIyMjSGVpZ2h0IGFuYWx5c2lzDQoNCmBgYHtyIExvYWQsIHdhcm5pbmc9RkFMU0UsIGZpZy5oZWlnaHQ9OCwgZmlnLndpZHRoPTh9DQojIGluc3RhbGwucGFja2FnZXMoInpvbyIpDQojaW5zdGFsbC5wYWNrYWdlcygicG9seW5vbSIpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShsdWJyaWRhdGUpICAgDQpsaWJyYXJ5KGh5ZHJvR09GKQ0KbGlicmFyeSh4dGFibGUpDQpsaWJyYXJ5KGtuaXRyKQ0KbGlicmFyeSh0aWR5cikNCmxpYnJhcnkoUlNRTGl0ZSkNCmxpYnJhcnkoYWdyaWNvbGFlKQ0KbGlicmFyeShzY2FsZXMpDQpsaWJyYXJ5KHpvbykNCmxpYnJhcnkobG1lNCkNCmxpYnJhcnkocG9seW5vbSkNCmBgYA0KIyMgbG9kZSBvYnNlcnZlZCBkYXRhDQpgYGB7cn0NCnVwRGlyIDwtICJEOi9SL0NvbWJpbmVkRGF0YS8iDQpvYnNEYXRhIDwtICJEOi9SL0NvbWJpbmVkRGF0YS8iDQoNCm9ic0FsbCA8LSByZWFkLnRhYmxlKHBhc3RlMChvYnNEYXRhLCAiT2JzQWxsLnR4dCIpLA0KICAgICAgICAgICAgICAgICAgIGhlYWRlciA9IFRSVUUpDQpvYnNBMTwtIG9ic0FsbCAlPiUNCiAgZHBseXI6OmZpbHRlcihDb2xsZWN0aW9uPT0iMjAwMF8yMDAyIiklPiUNCiAgbXV0YXRlKFN0YXJ0RGF0ZT1kbXkoU3RhcnREYXRlKSxNaWREYXRlPWRteShNaWREYXRlKSxGaW5pc2hEYXRlPWRteShGaW5pc2hEYXRlKSxDbG9jay5Ub2RheT1kbXkoQ2xvY2suVG9kYXkpKSAlPiUNCiAgI211dGF0ZShTb3dpbmdEYXRlPWFzLmZhY3RvcihpZmVsc2UoU293aW5nRGF0ZT09Im5vIiwiU2RfTm8iLHBhc3RlMCgiU2RfIixTb3dpbmdEYXRlKSkpKSAlPiUgIyBhc3N1bWUgdGhpcyBpcyB0eXBvIHRvIGJlIGZpeGVkPw0KICBtdXRhdGUoR3Jvd3RoU2Vhc29uMT1hcy5mYWN0b3IocGFzdGUwKCJHc18iLEdyb3d0aFNlYXNvbikpKSAlPiUgIyBjcmVhdGluZyBtb3JlIGludHVpdGl2ZSBsYWJlbHMgaGVyZQ0KICBtdXRhdGUoUm90YXRpb24xPWFzLmZhY3RvcihwYXN0ZTAoIlJ0XyIsUm90YXRpb24pKSkgJT4lDQogIG11dGF0ZShFeHBVbml0Q29kZT1hcy5mYWN0b3IocGFzdGUwKE5hbWUsR3Jvd3RoU2Vhc29uMSxSb3RhdGlvbjEpKSkgJT4lDQogIG11dGF0ZShDbG9jay5Ub2RheTEgPSBhcy5QT1NJWGN0KHBhc3RlKENsb2NrLlRvZGF5LFRpbWUpLGZvcm1hdD0iJVktJW0tJWQgJUg6JU06JVMiKSklPiUNCiAgbXV0YXRlKEdyb3d0aFNlYXNvbjI9YXMuZmFjdG9yKHBhc3RlMCgiWSIsR3Jvd3RoU2Vhc29uLCIoIixQZXJpb2QsIikiKSkpICU+JQ0KIG11dGF0ZShSb3RhdGlvbjI9YXMuZmFjdG9yKGlmZWxzZShSb3RhdGlvbj09IjEiLHBhc3RlMCgiUyIsUm90YXRpb24pLHBhc3RlMCgiUiIsUm90YXRpb24pKSkpDQoNCm9ic0E0PC0gb2JzQWxsICU+JQ0KICBkcGx5cjo6ZmlsdGVyKENvbGxlY3Rpb249PSIyMDE0XzIwMTgiKSU+JQ0KICBtdXRhdGUoU3RhcnREYXRlPWRteShTdGFydERhdGUpLE1pZERhdGU9ZG15KE1pZERhdGUpLEZpbmlzaERhdGU9ZG15KEZpbmlzaERhdGUpLENsb2NrLlRvZGF5PWRteShDbG9jay5Ub2RheSkpICU+JQ0KICAjbXV0YXRlKFNvd2luZ0RhdGU9YXMuZmFjdG9yKGlmZWxzZShTb3dpbmdEYXRlPT0ibm8iLCJTZF9ObyIscGFzdGUwKCJTZF8iLFNvd2luZ0RhdGUpKSkpICU+JSAjIGFzc3VtZSB0aGlzIGlzIHR5cG8gdG8gYmUgZml4ZWQ/DQogIG11dGF0ZShHcm93dGhTZWFzb24xPWFzLmZhY3RvcihwYXN0ZTAoIkdzXyIsR3Jvd3RoU2Vhc29uKSkpICU+JSAjIGNyZWF0aW5nIG1vcmUgaW50dWl0aXZlIGxhYmVscyBoZXJlDQogIG11dGF0ZShSb3RhdGlvbjE9YXMuZmFjdG9yKHBhc3RlMCgiUnRfIixSb3RhdGlvbikpKSAlPiUNCiAgbXV0YXRlKEV4cFVuaXRDb2RlPWFzLmZhY3RvcihwYXN0ZTAoTmFtZSxHcm93dGhTZWFzb24xLFJvdGF0aW9uMSkpKSAlPiUNCiAgbXV0YXRlKENsb2NrLlRvZGF5MSA9IGFzLlBPU0lYY3QocGFzdGUoQ2xvY2suVG9kYXksVGltZSksZm9ybWF0PSIlWS0lbS0lZCAlSDolTTolUyIpKSU+JQ0KICBtdXRhdGUoR3Jvd3RoU2Vhc29uMj1hcy5mYWN0b3IocGFzdGUwKCJZIixHcm93dGhTZWFzb24sIigiLFBlcmlvZCwiKSIpKSkgJT4lDQogIG11dGF0ZShSb3RhdGlvbjI9YXMuZmFjdG9yKGlmZWxzZShSb3RhdGlvbj09IjEiLHBhc3RlMCgiUyIsUm90YXRpb24pLHBhc3RlMCgiUiIsUm90YXRpb24pKSkpDQogDQoNCiAgb2JzQTI8LSBvYnNBbGwgJT4lDQogIGRwbHlyOjpmaWx0ZXIoQ29sbGVjdGlvbj09IjE5OTdfMjAwMSIpJT4lDQogIG11dGF0ZShTdGFydERhdGU9ZG15KFN0YXJ0RGF0ZSksTWlkRGF0ZT1kbXkoTWlkRGF0ZSksRmluaXNoRGF0ZT1kbXkoRmluaXNoRGF0ZSksQ2xvY2suVG9kYXk9ZG15KENsb2NrLlRvZGF5KSkgJT4lDQogICNtdXRhdGUoU293aW5nRGF0ZT1hcy5mYWN0b3IoaWZlbHNlKFNvd2luZ0RhdGU9PSJubyIsIlNkX05vIixwYXN0ZTAoIlNkXyIsU293aW5nRGF0ZSkpKSkgJT4lICMgYXNzdW1lIHRoaXMgaXMgdHlwbyB0byBiZSBmaXhlZD8NCiAgbXV0YXRlKEdyb3d0aFNlYXNvbjE9YXMuZmFjdG9yKHBhc3RlMCgiR3NfIixHcm93dGhTZWFzb24pKSkgJT4lICMgY3JlYXRpbmcgbW9yZSBpbnR1aXRpdmUgbGFiZWxzIGhlcmUNCiAgbXV0YXRlKFJvdGF0aW9uMT1hcy5mYWN0b3IocGFzdGUwKCJSdF8iLFJvdGF0aW9uKSkpICU+JQ0KICBtdXRhdGUoRXhwVW5pdENvZGU9YXMuZmFjdG9yKHBhc3RlMChOYW1lLEdyb3d0aFNlYXNvbjEsUm90YXRpb24xKSkpICU+JQ0KICBtdXRhdGUoQ2xvY2suVG9kYXkxID0gYXMuUE9TSVhjdChwYXN0ZShDbG9jay5Ub2RheSxUaW1lKSxmb3JtYXQ9IiVZLSVtLSVkICVIOiVNOiVTIikpJT4lDQogIG11dGF0ZShHcm93dGhTZWFzb24yPWFzLmZhY3RvcihwYXN0ZTAoIlkiLEdyb3d0aFNlYXNvbiwiKCIsUGVyaW9kLCIpIikpKSAlPiUNCiAgbXV0YXRlKFJvdGF0aW9uMj1hcy5mYWN0b3IocGFzdGUwKCJSIixSb3RhdGlvbikpKQ0KICANCg0KICBvYnNBMzwtIG9ic0FsbCAlPiUNCiAgZHBseXI6OmZpbHRlcihDb2xsZWN0aW9uPT0iMjAwMl8yMDA0IiklPiUNCiAgbXV0YXRlKFN0YXJ0RGF0ZT1kbXkoU3RhcnREYXRlKSxNaWREYXRlPWRteShNaWREYXRlKSxGaW5pc2hEYXRlPWRteShGaW5pc2hEYXRlKSxDbG9jay5Ub2RheT1kbXkoQ2xvY2suVG9kYXkpKSAlPiUNCiAgI211dGF0ZShTb3dpbmdEYXRlPWFzLmZhY3RvcihpZmVsc2UoU293aW5nRGF0ZT09Im5vIiwiU2RfTm8iLHBhc3RlMCgiU2RfIixTb3dpbmdEYXRlKSkpKSAlPiUgIyBhc3N1bWUgdGhpcyBpcyB0eXBvIHRvIGJlIGZpeGVkPw0KICBtdXRhdGUoR3Jvd3RoU2Vhc29uMT1hcy5mYWN0b3IocGFzdGUwKCJHc18iLEdyb3d0aFNlYXNvbikpKSAlPiUgIyBjcmVhdGluZyBtb3JlIGludHVpdGl2ZSBsYWJlbHMgaGVyZQ0KICBtdXRhdGUoUm90YXRpb24xPWFzLmZhY3RvcihwYXN0ZTAoIlJ0XyIsUm90YXRpb24pKSkgJT4lDQogIG11dGF0ZShFeHBVbml0Q29kZT1hcy5mYWN0b3IocGFzdGUwKE5hbWUsR3Jvd3RoU2Vhc29uMSxSb3RhdGlvbjEpKSkgJT4lDQogIG11dGF0ZShDbG9jay5Ub2RheTEgPSBhcy5QT1NJWGN0KHBhc3RlKENsb2NrLlRvZGF5LFRpbWUpLGZvcm1hdD0iJVktJW0tJWQgJUg6JU06JVMiKSklPiUNCiAgbXV0YXRlKEdyb3d0aFNlYXNvbjI9YXMuZmFjdG9yKHBhc3RlMCgiWSIsR3Jvd3RoU2Vhc29uLCIoIixQZXJpb2QsIikiKSkpICU+JQ0KICBtdXRhdGUoUm90YXRpb24yPWFzLmZhY3RvcihwYXN0ZTAoIlIiLFJvdGF0aW9uKSkpDQogIA0Kb2JzQTwtcmJpbmQob2JzQTIsb2JzQTMsb2JzQTEsb2JzQTQpDQpzdW1tYXJ5KG9ic0EpDQogb2JzQQ0KYGBgDQoNCiNMb2FkIFR0IGFuZCBKb2luIE9ic2VydmVkIGRhdGEgdG9nZXRoZXINCmBgYHtyfQ0KdXBEaXIgPC0gIkQ6L1IvIg0Kb2JzRGF0YSA8LSAiRDovUi9UdEFsbC8iDQoNClR0PC0gcmVhZC50YWJsZShwYXN0ZTAob2JzRGF0YSwgImRmLmFsbC50eHQiKSwNCiAgICAgICAgICAgICAgIGhlYWRlciA9IFRSVUUpDQpUdEEgPC0gVHQgJT4lIG11dGF0ZShDbG9jay5Ub2RheT1kbXkoQ2xvY2suVG9kYXkpLCBFeHBVbml0Q29kZT1hcy5mYWN0b3IoRXhwTmFtZSkpDQpUdEENCk9ic0ggPC1tZXJnZShvYnNBLFR0QSxieT1jKCJDbG9jay5Ub2RheSIsIkV4cFVuaXRDb2RlIikpICU+JQ0KICBtdXRhdGUoR3Jvd3RoUm90YXRpb249YXMuZmFjdG9yKHBhc3RlMChHcm93dGhTZWFzb24ueCxSb3RhdGlvbi54KSkpJT4lDQogIGRwbHlyOjpmaWx0ZXIoV2F0ZXIueD09ImlyciIpJT4lDQogIGRwbHlyOjpmaWx0ZXIoRGVmb2xpYXRpb24ueD09IkxMIiklPiUNCiAgZHBseXI6OmZpbHRlcihWYXJpYWJsZT09IkhlaWdodCIpJT4lDQogIGRwbHlyOjpmaWx0ZXIoVGI9PTEpDQogIA0KDQpzdW1tYXJ5KE9ic0gpDQpgYGANCmBgYHtyfQ0KbXl0aGVtZTE8LXRoZW1lKA0KICAgICBwYW5lbC5zcGFjaW5nPXVuaXQoLjAxLCAibGluZXMiKSwNCiAgICAgcGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJibGFjayIsc2l6ZT0xKSwgDQogICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksDQogICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCksDQogICAgIGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmxhY2siLHNpemUgPSAxKSwNCiAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoZmFjZSA9ICJwbGFpbiIsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDE0LGFuZ2xlPTkwLCB2anVzdD0wLjUsIGhqdXN0ID0gMSksDQogICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAicGxhaW4iLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAxNCksDQogICAgIGF4aXMudGl0bGUueD1lbGVtZW50X3RleHQoZmFjZT0iYm9sZCIsY29sb3VyPSJibGFjayIsc2l6ZSA9IDE0KSwNCiAgICAgYXhpcy50aXRsZS55PWVsZW1lbnRfdGV4dChmYWNlPSJib2xkIixjb2xvdXI9ImJsYWNrIixzaXplID0gMTQpLA0KICAgICBzdHJpcC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJibGFjayIsIGZpbGwgPSAid2hpdGUiLHNpemU9MSksDQogICAgIHN0cmlwLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplPTE0LCBhbmdsZT0wLCBmYWNlID0gInBsYWluIiksIA0KICAgICBzdHJpcC50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZT0xNCwgZmFjZT0icGxhaW4iKSwNCiAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KGNvbG91cj0iYmxhY2siLCBzaXplPTE0LCBmYWNlPSJib2xkIiksDQogICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiLCB2anVzdCA9IDAuNSwgc2l6ZSA9IDE0KSkNCg0KbXl0aGVtZTM8LXRoZW1lKA0KICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3VyPSJibGFjayIsIHNpemU9MTQsIGZhY2U9ImJvbGQiKSwNCiAgICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyPSJibGFjayIsIHNpemUgPSAxNCxmYWNlPSJwbGFpbiIpLA0KICAgICBwYW5lbC5zcGFjaW5nPXVuaXQoLjAxLCAibGluZXMiKSwNCiAgICAgcGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJibGFjayIsc2l6ZT0xKSwgDQogICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksDQogICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCksDQogICAgIGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmxhY2siLHNpemUgPSAxKSwNCiAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoZmFjZSA9ICJwbGFpbiIsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDE0LCB2anVzdD0wLjUsIGhqdXN0ID0gMSksDQogICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAicGxhaW4iLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAxNCksDQogICAgIGF4aXMudGl0bGUueD1lbGVtZW50X3RleHQoZmFjZT0iYm9sZCIsY29sb3VyPSJibGFjayIsc2l6ZSA9IDE0KSwNCiAgICAgYXhpcy50aXRsZS55PWVsZW1lbnRfdGV4dChmYWNlPSJib2xkIixjb2xvdXI9ImJsYWNrIixzaXplID0gMTQpLA0KICAgICBzdHJpcC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJibGFjayIsIGZpbGwgPSAid2hpdGUiLHNpemU9MSksDQogICAgIHN0cmlwLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplPTE0LCBhbmdsZT0wLCBmYWNlID0gInBsYWluIiksIA0KICAgICBzdHJpcC50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZT0xNCwgZmFjZT0icGxhaW4iKSwNCiAgICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZCIsIHZqdXN0ID0gMC41LCBzaXplID0gMTQpLA0KICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJyaWdodCIsIGxlZ2VuZC5ib3ggPSAidmVydGljYWwiKQ0KYGBgDQoNCg0KIyMjI0hlaWdodCBhZ2FpbnN0IE1lYW4gdGVtcGVyYXR1cmUgDQpgYGB7cixmaWcuaGVpZ2h0PTUsIGZpZy53aWR0aD04fQ0Kb2JzaGVpZ2h0PC1PYnNIJT4lDQogIGRwbHlyOjpmaWx0ZXIoTmFtZT09Ikl2ZXJzZW5fOFdhdGVyaXJyIikNCg0Kb2JzaGVpZ2h0JFJvdGF0aW9uMjwtIGZhY3RvcihvYnNoZWlnaHQkUm90YXRpb24yLCBsZXZlbHM9YygiUjEiLCAiUjIiLCAiUjMiLCAiUjQiLCAiUjUiLCJSNiIsICJSNyIpKQ0KDQpvYnNoZWlnaHQlPiUNCiAgZ2dwbG90KGFlcyh4PVR0X2Jyb2tlbl9zdW0sIHk9T2JzZXJ2ZWQpLCBjb2xvdXI9ZmFjdG9yKE5hbWUpKStnZW9tX3BvaW50KHNpemU9MikrdGhlbWVfYncoKSt4bGFiKCJNZWFuIHRlbXBlcmF0dXJlICiwQykiKSt5bGFiKCJQbGFudCBoZWlnaHQgKG1tKSIpKyBmYWNldF9ncmlkKEdyb3d0aFNlYXNvbjJ+Um90YXRpb24yKSsNCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgc2UgPSBUUlVFLGxpbmV0eXBlPTEgLCBjb2xvdXI9ImJsYWNrIikrIA0KICBnZ3RpdGxlKCJFMUlMTChJdmVyc2VuXzhXYXRlcmlycikiKStteXRoZW1lMSsNCiBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBzZSA9IFRSVUUsIGxpbmV0eXBlID0gMSwgY29sb3VyPSJibHVlIikNCiNnZ3NhdmUoIkQ6L1IvUGljdHVyZXMvSGVpZ2h0L0l2ZXJzZW5fOFdhdGVyaXJySGVpZ2h0LnBuZyIsIHdpZHRoPTgsIGhlaWdodD02LCBkcGk9NTAwKQ0KDQpgYGANCmBgYHtyLGZpZy5oZWlnaHQ9NSwgZmlnLndpZHRoPTh9DQpvYnNoZWlnaHQ8LU9ic0glPiUNCiAgZHBseXI6OmZpbHRlcihOYW1lPT0iSXZlcnNlbl84V2F0ZXJpcnIiKQ0Kb2JzaGVpZ2h0JFJvdGF0aW9uMjwtIGZhY3RvcihvYnNoZWlnaHQkUm90YXRpb24yLCBsZXZlbHM9YygiUjEiLCAiUjIiLCAiUjMiLCAiUjQiLCAiUjUiLCJSNiIsICJSNyIpKQ0Kb2JzaGVpZ2h0JT4lDQogIGdncGxvdChhZXMoeD1UdF9icm9rZW5fc3VtLCB5PU9ic2VydmVkKSwgY29sb3VyPWZhY3RvcihOYW1lKSkrZ2VvbV9wb2ludChzaXplPTIpK3RoZW1lX2J3KCkreGxhYigiVGhlcm1hbCB0aW1lICiwQ2QpIikreWxhYigiUGxhbnQgaGVpZ2h0IChtbSkiKSsgZmFjZXRfZ3JpZChHcm93dGhTZWFzb24yflJvdGF0aW9uMikrDQogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIHNlID0gVFJVRSxsaW5ldHlwZT0xICwgY29sb3VyPSJibGFjayIpKw0KICBnZ3RpdGxlKCJFMUlMTChJdmVyc2VuXzhXYXRlcmlycikiKStteXRoZW1lMSsNCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCA2MDAsIGJ5ID0yMDApLCBsaW1pdHM9YygwLDUwMCkpKw0KICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDU1MCwgYnkgPTIwMCksIGxpbWl0cz1jKDAsNjAwKSkrDQogZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgc2UgPSBUUlVFLCBsaW5ldHlwZSA9IDEsIGNvbG91cj0iYmx1ZSIpDQojZ2dzYXZlKCJEOi9SL1BpY3R1cmVzL0hlaWdodC9JdmVyc2VuXzhXYXRlcmlyckhlaWdodC5wbmciLCB3aWR0aD04LCBoZWlnaHQ9NiwgZHBpPTUwMCkNCg0KYGBgDQoNCg0KI0l2ZXJzZW5fOTFEZWZvbGlhdGlvbkxMDQpgYGB7cixmaWcuaGVpZ2h0PTUsIGZpZy53aWR0aD04fQ0Kb2JzaGVpZ2h0MTwtT2JzSCU+JQ0KICBkcGx5cjo6ZmlsdGVyKE5hbWU9PSJJdmVyc2VuXzkxRGVmb2xpYXRpb25MTCIpDQpvYnNoZWlnaHQxJFJvdGF0aW9uMjwtIGZhY3RvcihvYnNoZWlnaHQxJFJvdGF0aW9uMiwgbGV2ZWxzPWMoIlIxIiwgIlIyIiwgIlIzIiwgIlI0IiwgIlI1IiwiUjYiLCAiUjciKSkNCg0Kb2JzaGVpZ2h0MSU+JQ0KICBnZ3Bsb3QoYWVzKHg9VHRfYnJva2VuX3N1bSwgeT1PYnNlcnZlZCksIGNvbG91cj1mYWN0b3IoTmFtZSkpK2dlb21fcG9pbnQoc2l6ZT0yKSt0aGVtZV9idygpK3hsYWIoIlRoZXJtYWwgdGltZSAosENkKSIpK3lsYWIoIlBsYW50IGhlaWdodCAobW0pIikrZ2d0aXRsZSgiRTNJTEwoSXZlcnNlbl85MURlZm9saWF0aW9uTEwpIikrDQogZmFjZXRfZ3JpZChHcm93dGhTZWFzb24yflJvdGF0aW9uMikrDQogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIHNlID0gVFJVRSxsaW5ldHlwZT0xICwgY29sb3VyPSJibGFjayIpKw0KICBteXRoZW1lMSsNCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCA2MDAsIGJ5ID0yMDApLCBsaW1pdHM9YygwLDUwMCkpKw0KICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDU1MCwgYnkgPTIwMCksIGxpbWl0cz1jKDAsNjAwKSkrDQogZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgc2UgPSBUUlVFLCBsaW5ldHlwZSA9IDEsIGNvbG91cj0iYmx1ZSIpDQoNCiNnZ3NhdmUoIkQ6L1IvUGljdHVyZXMvSGVpZ2h0L0l2ZXJzZW5fOTFEZWZvbGlhdGlvbkxMLnBuZyIsIHdpZHRoPTgsIGhlaWdodD02LCBkcGk9NTAwKQ0KYGBgDQojIyNtZWFuIHRlbXBlcmF0dXJlDQpgYGB7cixmaWcuaGVpZ2h0PTUsIGZpZy53aWR0aD04fQ0Kb2JzaGVpZ2h0MTwtT2JzSCU+JQ0KICBkcGx5cjo6ZmlsdGVyKE5hbWU9PSJJdmVyc2VuXzkxRGVmb2xpYXRpb25MTCIpDQpvYnNoZWlnaHQxJT4lDQogIGdncGxvdChhZXMoeD1tZWFuLCB5PU9ic2VydmVkKSwgY29sb3VyPWZhY3RvcihOYW1lKSkrZ2VvbV9wb2ludChzaXplPTIpK3RoZW1lX2J3KCkreGxhYigiVGhlcm1hbCB0aW1lICiwQ2QpIikreWxhYigiUGxhbnQgaGVpZ2h0IChtbSkiKStnZ3RpdGxlKCJJdmVyc2VuXzkxRGVmb2xpYXRpb25MTCIpKw0KIGZhY2V0X2dyaWQoR3Jvd3RoU2Vhc29uMn5Sb3RhdGlvbjIpKw0KICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBzZSA9IFRSVUUsbGluZXR5cGU9MSAsIGNvbG91cj0iYmxhY2siKSsNCiAgbXl0aGVtZTErDQogICMgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCA2MDAsIGJ5ID0yMDApLCBsaW1pdHM9YygwLDUwMCkpKw0KICAjIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgNTUwLCBieSA9MjAwKSwgbGltaXRzPWMoMCw2MDApKSsNCiBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBzZSA9IFRSVUUsIGxpbmV0eXBlID0gMSwgY29sb3VyPSJibHVlIikNCiNnZ3NhdmUoIkQ6L1IvUGljdHVyZXMvSGVpZ2h0L0l2ZXJzZW5fOTFEZWZvbGlhdGlvbkxMLnBuZyIsIHdpZHRoPTgsIGhlaWdodD02LCBkcGk9NTAwKQ0KYGBgDQoNCiMjSXZlcnNlbl85U293aW5nRGF0ZVNEMVdhdGVyaXJyDQpgYGB7cixmaWcuaGVpZ2h0PTQsIGZpZy53aWR0aD04fQ0KDQpvYnNoZWlnaHQzPC1PYnNIJT4lDQogIGRwbHlyOjpmaWx0ZXIoTmFtZT09Ikl2ZXJzZW5fOVNvd2luZ0RhdGVTRDFXYXRlcmlyciIpJT4lDQogIG11dGF0ZShPYnNlcnZlZD1PYnNlcnZlZCoxMCkNCiBvYnNoZWlnaHQzJFJvdGF0aW9uMjwtIGZhY3RvcihvYnNoZWlnaHQzJFJvdGF0aW9uMiwgbGV2ZWxzPWMoIlMxIiwgIlIyIiwgIlIzIiwgIlI0IiwgIlI1IiwiUjYiLCAiUjciKSkNCm9ic2hlaWdodDMlPiUNCiAgZ2dwbG90KGFlcyh4PVR0X2Jyb2tlbl9zdW0sIHk9T2JzZXJ2ZWQpLCBjb2xvdXI9ZmFjdG9yKE5hbWUpKStnZW9tX3BvaW50KHNpemU9MikrdGhlbWVfYncoKSt4bGFiKCJUaGVybWFsIHRpbWUgKLBDZCkiKSt5bGFiKCJQbGFudCBoZWlnaHQgKG1tKSIpK2dndGl0bGUoIkUySUxMUzEoSXZlcnNlbl85U293aW5nRGF0ZVNEMVdhdGVyaXJyKSIpKw0KIGZhY2V0X2dyaWQoR3Jvd3RoU2Vhc29uMn5Sb3RhdGlvbjIpKw0KICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBzZSA9IFRSVUUsIGxpbmV0eXBlID0gMSwgY29sb3VyPSJibGFjayIpKw0KIG15dGhlbWUxKw0KICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDgwMCwgYnkgPTMwMCksIGxpbWl0cz1jKDAsNzUwKSkrDQogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgNjAwLCBieSA9MjAwKSwgbGltaXRzPWMoMCw3MDApKSsNCiBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBzZSA9IFRSVUUsIGxpbmV0eXBlID0gMSwgY29sb3VyPSJibHVlIikNCiNnZ3NhdmUoIkQ6L1IvUGljdHVyZXMvSGVpZ2h0L0l2ZXJzZW5fOVNvd2luZ0RhdGVTRDFXYXRlcmlyci5wbmciLCB3aWR0aD04LCBoZWlnaHQ9NSwgZHBpPTUwMCkNCmBgYA0KIyNJdmVyc2VuXzlTb3dpbmdEYXRlU0QyV2F0ZXJpcnINCmBgYHtyLGZpZy5oZWlnaHQ9MywgZmlnLndpZHRoPTEwfQ0KDQpvYnNoZWlnaHQxPC1PYnNIJT4lDQogIGRwbHlyOjpmaWx0ZXIoTmFtZT09Ikl2ZXJzZW5fOVNvd2luZ0RhdGVTRDJXYXRlcmlyciIpJT4lDQogIG11dGF0ZShPYnNlcnZlZD1PYnNlcnZlZCoxMCkNCm9ic2hlaWdodDEkUm90YXRpb24yPC0gZmFjdG9yKG9ic2hlaWdodDEkUm90YXRpb24yLCBsZXZlbHM9YygiUzEiLCAiUjIiLCAiUjMiLCAiUjQiLCAiUjUiLCJSNiIsICJSNyIpKQ0KIA0Kb2JzaGVpZ2h0MSU+JQ0KICBnZ3Bsb3QoYWVzKHg9VHRfYnJva2VuX3N1bSwgeT1PYnNlcnZlZCksIGNvbG91cj1mYWN0b3IoTmFtZSkpK2dlb21fcG9pbnQoc2l6ZT0yKSt0aGVtZV9idygpK3hsYWIoIlRoZXJtYWwgdGltZSAosENkKSIpK3lsYWIoIlBsYW50IGhlaWdodCAobW0pIikrZ2d0aXRsZSgiRTJJTExTMihJdmVyc2VuXzlTb3dpbmdEYXRlU0QyV2F0ZXJpcnIpIikrDQogZmFjZXRfZ3JpZChHcm93dGhTZWFzb24yflJvdGF0aW9uMikrDQogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIHNlID0gVFJVRSwgbGluZXR5cGUgPSAxLCBjb2xvdXI9ImJsdWUiKSsNCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCA4MDAsIGJ5ID0yMDApLCBsaW1pdHM9YygwLDkwMCkpKw0KICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDYwMCwgYnkgPTIwMCksIGxpbWl0cz1jKDAsNzAwKSkrDQogIHRoZW1lKA0KICAgICBwYW5lbC5zcGFjaW5nPXVuaXQoLjAxLCAibGluZXMiKSwNCiAgICAgcGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJibGFjayIsc2l6ZT0xKSwgDQogICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksDQogICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCksDQogICAgIGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmxhY2siLHNpemUgPSAxKSwNCiAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoZmFjZSA9ICJwbGFpbiIsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDE0LCB2anVzdD0wLjUsIGhqdXN0ID0gMSksDQogICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAicGxhaW4iLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAxNCksDQogICAgIGF4aXMudGl0bGUueD1lbGVtZW50X3RleHQoZmFjZT0iYm9sZCIsY29sb3VyPSJibGFjayIsc2l6ZSA9IDE0KSwNCiAgICAgYXhpcy50aXRsZS55PWVsZW1lbnRfdGV4dChmYWNlPSJib2xkIixjb2xvdXI9ImJsYWNrIixzaXplID0gMTQpLA0KICAgICBzdHJpcC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJibGFjayIsIGZpbGwgPSAid2hpdGUiLHNpemU9MSksDQogICAgIHN0cmlwLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplPTE0LCBhbmdsZT0wLCBmYWNlID0gInBsYWluIiksIA0KICAgICBzdHJpcC50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZT0xNCwgZmFjZT0icGxhaW4iKSwNCiAgICAgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KGNvbG91cj0iYmxhY2siLCBzaXplPTE0LCBmYWNlPSJib2xkIiksDQogICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiLCB2anVzdCA9IDAuNSwgc2l6ZSA9IDE0KSkNCg0KI2dnc2F2ZSgiRDovUi9QaWN0dXJlcy9IZWlnaHQvSXZlcnNlbl85U293aW5nRGF0ZVNEMldhdGVyaXJyLnBuZyIsIHdpZHRoPTgsIGhlaWdodD0zLCBkcGk9NTAwKQ0KYGBgDQoNCiMjSXZlcnNlbl85U293aW5nRGF0ZVNEM1dhdGVyaXJyDQpgYGB7cixmaWcuaGVpZ2h0PTMsIGZpZy53aWR0aD0xMH0NCg0Kb2JzaGVpZ2h0MTwtT2JzSCU+JQ0KICBkcGx5cjo6ZmlsdGVyKE5hbWU9PSJJdmVyc2VuXzlTb3dpbmdEYXRlU0QzV2F0ZXJpcnIiKSU+JQ0KICBtdXRhdGUoT2JzZXJ2ZWQ9T2JzZXJ2ZWQqMTApDQpvYnNoZWlnaHQxJFJvdGF0aW9uMjwtIGZhY3RvcihvYnNoZWlnaHQxJFJvdGF0aW9uMiwgbGV2ZWxzPWMoIlMxIiwgIlIyIiwgIlIzIiwgIlI0IiwgIlI1IiwiUjYiLCAiUjciKSkNCiANCm9ic2hlaWdodDENCm9ic2hlaWdodDElPiUNCiAgZ2dwbG90KGFlcyh4PVR0X2Jyb2tlbl9zdW0sIHk9T2JzZXJ2ZWQpLCBjb2xvdXI9ZmFjdG9yKE5hbWUpKStnZW9tX3BvaW50KHNpemU9MikrdGhlbWVfYncoKSt4bGFiKCJUaGVybWFsIHRpbWUgKLBDZCkiKSt5bGFiKCJQbGFudCBoZWlnaHQgKG1tKSIpK2dndGl0bGUoIkUySUxMUzMoSXZlcnNlbl85U293aW5nRGF0ZVNEM1dhdGVyaXJyKSIpKw0KIGZhY2V0X2dyaWQoR3Jvd3RoU2Vhc29uMn5Sb3RhdGlvbjIpKw0KICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBzZSA9IFRSVUUsIGxpbmV0eXBlID0gMSwgY29sb3VyPSJibHVlIikrDQogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMTAwMCwgYnkgPTIwMCksIGxpbWl0cz1jKDAsMTEwMCkpKw0KICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDYwMCwgYnkgPTIwMCksIGxpbWl0cz1jKDAsNzAwKSkrDQogICNyZW1vdmUgZ3JpZCBsaW5lcyANCiAgdGhlbWUoDQogICAgIHBhbmVsLnNwYWNpbmc9dW5pdCguMDEsICJsaW5lcyIpLA0KICAgICBwYW5lbC5ib3JkZXIgPSBlbGVtZW50X3JlY3QoY29sb3VyID0gImJsYWNrIixzaXplPTEpLCANCiAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgYXhpcy5saW5lID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJibGFjayIsc2l6ZSA9IDEpLA0KICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChmYWNlID0gInBsYWluIiwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gMTQsIHZqdXN0PTAuNSwgaGp1c3QgPSAxKSwNCiAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJwbGFpbiIsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDE0KSwNCiAgICAgYXhpcy50aXRsZS54PWVsZW1lbnRfdGV4dChmYWNlPSJib2xkIixjb2xvdXI9ImJsYWNrIixzaXplID0gMTQpLA0KICAgICBheGlzLnRpdGxlLnk9ZWxlbWVudF90ZXh0KGZhY2U9ImJvbGQiLGNvbG91cj0iYmxhY2siLHNpemUgPSAxNCksDQogICAgIHN0cmlwLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoY29sb3VyID0gImJsYWNrIiwgZmlsbCA9ICJ3aGl0ZSIsc2l6ZT0xKSwNCiAgICAgc3RyaXAudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemU9MTQsIGFuZ2xlPTAsIGZhY2UgPSAicGxhaW4iKSwgDQogICAgIHN0cmlwLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplPTE0LCBmYWNlPSJwbGFpbiIpLA0KICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3VyPSJibGFjayIsIHNpemU9MTQsIGZhY2U9ImJvbGQiKSwNCiAgICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZCIsIHZqdXN0ID0gMC41LCBzaXplID0gMTQpKQ0KDQojZ2dzYXZlKCJEOi9SL1BpY3R1cmVzL0hlaWdodC9JdmVyc2VuXzlTb3dpbmdEYXRlU0QzV2F0ZXJpcnIucG5nIiwgd2lkdGg9OCwgaGVpZ2h0PTMsIGRwaT01MDApDQogDQpgYGANCiMjSXZlcnNlbl85U293aW5nRGF0ZVNENFdhdGVyaXJyDQpgYGB7cixmaWcuaGVpZ2h0PTMsIGZpZy53aWR0aD0xMH0NCg0Kb2JzaGVpZ2h0MTwtT2JzSCU+JQ0KICBkcGx5cjo6ZmlsdGVyKE5hbWU9PSJJdmVyc2VuXzlTb3dpbmdEYXRlU0Q0V2F0ZXJpcnIiKSU+JQ0KICBtdXRhdGUoT2JzZXJ2ZWQ9T2JzZXJ2ZWQqMTApDQpvYnNoZWlnaHQxJFJvdGF0aW9uMjwtIGZhY3RvcihvYnNoZWlnaHQxJFJvdGF0aW9uMiwgbGV2ZWxzPWMoIlMxIiwgIlIyIiwgIlIzIiwgIlI0IiwgIlI1IiwiUjYiLCAiUjciKSkNCiANCm9ic2hlaWdodDENCm9ic2hlaWdodDElPiUNCiAgZ2dwbG90KGFlcyh4PVR0X2Jyb2tlbl9zdW0sIHk9T2JzZXJ2ZWQpLCBjb2xvdXI9ZmFjdG9yKE5hbWUpKStnZW9tX3BvaW50KHNpemU9MikrdGhlbWVfYncoKSt4bGFiKCJUaGVybWFsIHRpbWUosENkKSIpK3lsYWIoIlBsYW50IGhlaWdodCAobW0pIikrZ2d0aXRsZSgiRTJJTExTNChJdmVyc2VuXzlTb3dpbmdEYXRlU0Q0V2F0ZXJpcnIpIikrDQogZmFjZXRfZ3JpZChHcm93dGhTZWFzb24yflJvdGF0aW9uMikrDQogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIHNlID0gVFJVRSwgbGluZXR5cGUgPSAxLCBjb2xvdXI9ImJsdWUiKSsNCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxMDAwLCBieSA9MjAwKSwgbGltaXRzPWMoMCwxMTAwKSkrDQogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgNjAwLCBieSA9MjAwKSwgbGltaXRzPWMoMCw2MDApKSsNCiAgI3JlbW92ZSBncmlkIGxpbmVzIA0KICB0aGVtZSgNCiAgICAgcGFuZWwuc3BhY2luZz11bml0KC4wMSwgImxpbmVzIiksDQogICAgIHBhbmVsLmJvcmRlciA9IGVsZW1lbnRfcmVjdChjb2xvdXIgPSAiYmxhY2siLHNpemU9MSksIA0KICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLA0KICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpLA0KICAgICBheGlzLmxpbmUgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImJsYWNrIixzaXplID0gMSksDQogICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAicGxhaW4iLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAxNCwgdmp1c3Q9MC41LCBoanVzdCA9IDEpLA0KICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChmYWNlID0gInBsYWluIiwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gMTQpLA0KICAgICBheGlzLnRpdGxlLng9ZWxlbWVudF90ZXh0KGZhY2U9ImJvbGQiLGNvbG91cj0iYmxhY2siLHNpemUgPSAxNCksDQogICAgIGF4aXMudGl0bGUueT1lbGVtZW50X3RleHQoZmFjZT0iYm9sZCIsY29sb3VyPSJibGFjayIsc2l6ZSA9IDE0KSwNCiAgICAgc3RyaXAuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChjb2xvdXIgPSAiYmxhY2siLCBmaWxsID0gIndoaXRlIixzaXplPTEpLA0KICAgICBzdHJpcC50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZT0xNCwgYW5nbGU9MCwgZmFjZSA9ICJwbGFpbiIpLCANCiAgICAgc3RyaXAudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemU9MTQsIGZhY2U9InBsYWluIiksDQogICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvdXI9ImJsYWNrIiwgc2l6ZT0xNCwgZmFjZT0iYm9sZCIpLA0KICAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJib2xkIiwgdmp1c3QgPSAwLjUsIHNpemUgPSAxNCkpDQoNCiNnZ3NhdmUoIkQ6L1IvUGljdHVyZXMvSGVpZ2h0L0l2ZXJzZW5fOVNvd2luZ0RhdGVTRDRXYXRlcmlyci5wbmciLCB3aWR0aD04LCBoZWlnaHQ9MywgZHBpPTUwMCkNCiANCmBgYA0KDQojI0l2ZXJzb24xMkRlZm9saWF0aW9uRkQ1DQpgYGB7cixmaWcuaGVpZ2h0PTUsIGZpZy53aWR0aD04fQ0KDQpvYnNoZWlnaHQxPC1PYnNIJT4lDQogIGRwbHlyOjpmaWx0ZXIoTmFtZT09Ikl2ZXJzZW5fMTIxRGVmb2xpYXRpb25MTEZERkQ1IiklPiUNCiAgbXV0YXRlKE9ic2VydmVkPU9ic2VydmVkKjEwKQ0KIG9ic2hlaWdodDEkUm90YXRpb24yPC0gZmFjdG9yKG9ic2hlaWdodDEkUm90YXRpb24yLCBsZXZlbHM9YygiUzEiLCAiUjIiLCAiUjMiLCAiUjQiLCAiUjUiLCJSNiIsICJSNyIpKQ0KDQpvYnNoZWlnaHQxJT4lDQogIGdncGxvdChhZXMoeD1UdF9icm9rZW5fc3VtLCB5PU9ic2VydmVkKSwgY29sb3VyPWZhY3RvcihOYW1lKSkrZ2VvbV9wb2ludChzaXplPTIpK3RoZW1lX2J3KCkreGxhYigiVGhlcm1hbCB0aW1lKLBDZCkiKSt5bGFiKCJQbGFudCBoZWlnaHQgKG1tKSIpK2dndGl0bGUoIkU1SUxMRjUoSXZlcnNlbl8xMjFEZWZvbGlhdGlvbkxMRkRGRDUpIikrDQogZmFjZXRfZ3JpZChHcm93dGhTZWFzb24yflJvdGF0aW9uMikrDQogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIHNlID0gVFJVRSwgbGluZXR5cGUgPSAxLCBjb2xvdXI9ImJsdWUiKSsNCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxMDAwLCBieSA9NjAwKSwgbGltaXRzPWMoMCw5MDApKSsNCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCA2MDAsIGJ5ID0yMDApLCBsaW1pdHM9YygwLDUwMCkpKw0KICAgbXl0aGVtZTENCiAjIGdnc2F2ZSgiRDovUi9QaWN0dXJlcy9IZWlnaHQvSXZlcnNlbl8xMjFEZWZvbGlhdGlvbkxMRkRGRDUucG5nIiwgd2lkdGg9OCwgaGVpZ2h0PTYsIGRwaT01MDApDQogDQpgYGANCg0KIyMjIyBjb252ZXJ0IHVuaXQNCiMjI2NhbGN1bGF0ZSBmb3IgaGVpZ2h0Y2hyb24NCg0KYGBge3J9DQojZGV0YWNoKHBhY2thZ2U6cGx5cikNCm9ic0gyPC1PYnNIJT4lDQogIGRwbHlyOjpmaWx0ZXIoQ29sbGVjdGlvbiE9IjE5OTdfMjAwMSIpJT4lDQogIGRwbHlyOjpmaWx0ZXIoQ29sbGVjdGlvbiE9IjIwMDJfMjAwNCIpJT4lDQogIG11dGF0ZShPYnNlcnZlZD1PYnNlcnZlZCoxMCkNCg0Kb2JzSDM8LU9ic0glPiUNCiAgZHBseXI6OmZpbHRlcihDb2xsZWN0aW9uIT0iMjAwMF8yMDAyIiklPiUNCiAgZHBseXI6OmZpbHRlcihDb2xsZWN0aW9uIT0iMjAxNF8yMDE4IikNCm9ic0gzDQpvYnNITjwtcmJpbmQob2JzSDIsb2JzSDMpDQpvYnNITg0KDQoNCm9ic1Nsb3BlIDwtIG9ic0hOJT4lDQogIGdyb3VwX2J5KE5hbWUsR3Jvd3RoU2Vhc29uLngsUm90YXRpb24ueCxDb2xsZWN0aW9uLFRtZWFuLFBwbSxHcm93dGhSb3RhdGlvbixJRCxFeHBlcmltZW50SUQpICU+JQ0KICBkbyhtb2QgPSBsbShUdF9icm9rZW5fc3Vtfk9ic2VydmVkLGRhdGE9LikpICU+JQ0KICBtdXRhdGUoc2xvcGUgPSBzdW1tYXJ5KG1vZCkkY29lZmZbMl0pICU+JQ0KICBkcGx5cjo6c2VsZWN0KC1tb2QpDQpvYnNTbG9wZQ0KDQpvYnNIYW5hbHlzaXM8LSBvYnNITiU+JQ0KICBncm91cF9ieShOYW1lLEdyb3d0aFNlYXNvbi54LFJvdGF0aW9uLngsQ29sbGVjdGlvbixJRCxFeHBlcmltZW50SUQpICU+JQ0KICBkbyhtb2QgPSBsbShUdF9icm9rZW5fc3Vtfk9ic2VydmVkLGRhdGE9LikpICU+JQ0KICBtdXRhdGUoc2xvcGUgPSBzdW1tYXJ5KG1vZCkkY29lZmZbMl0pICU+JQ0KICBtdXRhdGUoUjIgPSBzdW1tYXJ5KG1vZCkkci5zcXVhcmVkKSU+JQ0KICBtdXRhdGUoUD1hbm92YShtb2QpJCdQcig+RiknWzFdKSU+JSAgDQogIG11dGF0ZShpbnRjcD0gc3VtbWFyeShtb2QpJGNvZWZmWzFdKSU+JQ0KICBkcGx5cjo6c2VsZWN0KC1tb2QpDQpvYnNIYW5hbHlzaXMNCndyaXRlLmNzdihvYnNIYW5hbHlzaXMsIkQ6L1Ivb2JzSGFuYWx5c2lzLmNzdiIsIHJvdy5uYW1lcyA9IEZBTFNFKQ0KDQoNCg0KDQoNCmBgYA0KIyNsb2FkIFJvdGF0aW9uIGFuZCBHcm93dGggc2Vhc29uDQoNCmBgYHtyLGZpZy5oZWlnaHQ9NCwgZmlnLndpZHRoPTEwfQ0KbGlicmFyeShwbHlyKQ0KcGh5bGwgPC0gIkQ6XFxSXFwiDQpTdGFydEdyYXppbmcgPC0gcmVhZC50YWJsZShwYXN0ZTAocGh5bGwsICJFeHBlcmltZW50TGlzdC50eHQiKSwgDQogICAgICAgICAgICAgICAgICAgICAgaGVhZGVyID0gVFJVRSkNClN0YXJ0R3JhemluZzE8LVN0YXJ0R3JhemluZyAlPiUNCiAgbXV0YXRlKEdyb3d0aFJvdGF0aW9uPSBhcy5mYWN0b3IocGFzdGUwKEdyb3d0aFNlYXNvbixSb3RhdGlvbikpKQ0KSGNocm9uUHA8LSBtZXJnZShTdGFydEdyYXppbmcxLG9ic1Nsb3BlLGJ5PWMoIk5hbWUiLCJDb2xsZWN0aW9uIiwiR3Jvd3RoUm90YXRpb24iKSkNCg0KSGNocm9uUHAxPC1IY2hyb25QcCU+JQ0KZHBseXI6OmZpbHRlcihOYW1lIT0iSXZlcnNlbl84V2F0ZXJpcnIifEdyb3d0aFJvdGF0aW9uIT0iNTciKSU+JQ0KZHBseXI6OmZpbHRlcihOYW1lIT0iSXZlcnNlbl8xMjFEZWZvbGlhdGlvbkxMRkRGRDUifEdyb3d0aFJvdGF0aW9uIT0iMzYiKSU+JQ0KIGRwbHlyOjpmaWx0ZXIoTmFtZSE9Ikl2ZXJzZW5fMTIxRGVmb2xpYXRpb25MTEZERkQ1InxHcm93dGhSb3RhdGlvbiE9IjE0IiklPiUNCiBkcGx5cjo6ZmlsdGVyKE5hbWUhPSJJdmVyc2VuXzEyMURlZm9saWF0aW9uTExGREZENSJ8R3Jvd3RoUm90YXRpb24hPSIzNyIpJT4lDQogZHBseXI6OmZpbHRlcihOYW1lIT0iSXZlcnNlbl8xMjFEZWZvbGlhdGlvbkxMRkRGRDUifEdyb3d0aFJvdGF0aW9uIT0iMTIiKSU+JQ0KIGRwbHlyOjpmaWx0ZXIoTmFtZSE9Ikl2ZXJzZW5fMTIxRGVmb2xpYXRpb25MTEZERkQ1InxHcm93dGhSb3RhdGlvbiE9IjQxIiklPiUNCiBkcGx5cjo6ZmlsdGVyKE5hbWUhPSJJdmVyc2VuXzhXYXRlcmlyciJ8R3Jvd3RoUm90YXRpb24hPSIyNiIpJT4lDQogZHBseXI6OmZpbHRlcihOYW1lIT0iSXZlcnNlbl84V2F0ZXJpcnIifEdyb3d0aFJvdGF0aW9uIT0iMzIiKSU+JQ0KIGRwbHlyOjpmaWx0ZXIoTmFtZSE9Ikl2ZXJzZW5fOTFEZWZvbGlhdGlvbkxMInxHcm93dGhSb3RhdGlvbiE9IjI3IiklPiUNCiBkcGx5cjo6ZmlsdGVyKE5hbWUhPSJJdmVyc2VuXzkxRGVmb2xpYXRpb25MTCJ8R3Jvd3RoUm90YXRpb24hPSIxNyIpJT4lDQogZHBseXI6OmZpbHRlcihOYW1lIT0iSXZlcnNlbl85MURlZm9saWF0aW9uTEwifEdyb3d0aFJvdGF0aW9uIT0iMTEiKSU+JQ0KICMgICAjIGRwbHlyOjpmaWx0ZXIoTmFtZSE9Ikl2ZXJzZW5fOTFEZWZvbGlhdGlvbkxMInxHcm93dGhSb3RhdGlvbiE9IjE3IiklPiUNCiBkcGx5cjo6ZmlsdGVyKE5hbWUhPSJJdmVyc2VuXzlTb3dpbmdEYXRlU0QxV2F0ZXJpcnIifEdyb3d0aFJvdGF0aW9uIT0iMTQiKSU+JQ0KIGRwbHlyOjpmaWx0ZXIoTmFtZSE9Ikl2ZXJzZW5fOVNvd2luZ0RhdGVTRDFXYXRlcmlyciJ8R3Jvd3RoUm90YXRpb24hPSIyMSIpJT4lDQogIyAgICMgZHBseXI6OmZpbHRlcihOYW1lIT0iSXZlcnNlbl85U293aW5nRGF0ZVNEMVdhdGVyaXJyInxHcm93dGhSb3RhdGlvbiE9IjI2IiklPiUNCiBkcGx5cjo6ZmlsdGVyKE5hbWUhPSJJdmVyc2VuXzlTb3dpbmdEYXRlU0QyV2F0ZXJpcnIifEdyb3d0aFJvdGF0aW9uIT0iMTMiKQ0KICMjZHBseXI6OmZpbHRlcihOYW1lIT0iSXZlcnNlbl85U293aW5nRGF0ZVNENFdhdGVyaXJyInxHcm93dGhSb3RhdGlvbiE9IjEzIiklPiUNCiAjZHBseXI6OmZpbHRlcihTdGFnZSE9IlNlZWRsaW5nIikNCg0KIyBteS5mb3JtdWxhIDwtIHNsb3BlIH4gcG9seShQcG0sIDIsIHJhdyA9IFRSVUUpDQojIG0gPC0gbG0obXkuZm9ybXVsYSwgSGNocm9uUHAxKQ0KIyBteS5lcSA8LSBhcy5jaGFyYWN0ZXIoc2lnbmlmKGFzLnBvbHlub21pYWwoY29lZihtKSksIDIpKQ0KIyANCiMgDQojIGxhYmVsLnRleHQgPC0gcGFzdGUoZ3N1YigiaXRhbGljKHkpPXgiLCAifml0YWxpYyh4KSIsIG15LmVxLCBmaXhlZCA9IFRSVUUpLA0KIyAgICAgICAgICAgICAgIHBhc3RlKCJpdGFsaWMoUileMiIsICANCiMgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoc3VtbWFyeShtKSRyLnNxdWFyZWQsIGRpZ2l0cyA9IDIpLCANCiMgICAgICAgICAgICAgICAgICAgICBzZXAgPSAifmA9YH4iKSwNCiMgICAgICAgICAgICAgICAgICAgICBzZXAgPSAifn5+fiIpDQoNCg0KDQpteS5mb3JtdWxhICA8LSBmdW5jdGlvbihIY2hyb25QcDEpew0KICBteS5mb3JtdWxhIDwtIHNsb3BlIH4gcG9seShQcG0sIDIsIHJhdyA9IFRSVUUpDQogIG0gPC0gbG0obXkuZm9ybXVsYSwgSGNocm9uUHAxKQ0KICBteS5lcSA8LSBhcy5jaGFyYWN0ZXIoc2lnbmlmKGFzLnBvbHlub21pYWwoY29lZihtKSksIDIpKQ0KICBsYWJlbC50ZXh0IDwtIHBhc3RlKCJ5IiwiJz0nIixwYXN0ZShnc3ViKHksICJ+aXRhbGljKHgpIixteS5lcSwgZml4ZWQgPSBUUlVFKSksDQogICAgICAgICAgICAgIHBhc3RlKCJpdGFsaWMoUileMiIsZm9ybWF0KHN1bW1hcnkobSkkci5zcXVhcmVkLCBkaWdpdHMgPSAyKSwgDQogICAgICAgICAgICAgICAgICAgIHNlcCA9ICJ+YD1gfiIpLA0KICAgICAgICAgICAgICAgICAgICBzZXAgPSAifn5+fiIpDQogIGFzLmNoYXJhY3Rlcihhcy5leHByZXNzaW9uKGxhYmVsLnRleHQpKTsgICAgICAgICAgICAgICAgIA0KfQ0KDQpteS5lcXMgPC0gZGRwbHkoSGNocm9uUHAxLC4oU3RhZ2UpLG15LmZvcm11bGEpDQoNCg0KDQoNCmI8LUhjaHJvblBwMSU+JQ0KICBnZ3Bsb3QoYWVzKHg9UHBtLCB5PXNsb3BlLCBjb2xvdXI9ZmFjdG9yKElEKSxsYWJlbD1Hcm93dGhSb3RhdGlvbikpK2dlb21fdGV4dCgpK3RoZW1lX2J3KCkreGxhYigiTWVhbiBwaG90b3BlcmlvZCAoaCkiKSt5bGFiKGJxdW90ZShib2xkKCdIZWlnaHRjaHJvbiAoJyonsENkJ34nbW0nXi0xKicpJykpKSsNCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgc2UgPSBUUlVFLCBmb3JtdWxhPXkgfiBwb2x5KHgsIDIsIHJhdz1UUlVFKSwgY29sb3VyPSJkYXJrZ3JleSIpKw0KICBmYWNldF93cmFwKH5TdGFnZSxuY29sID0gMikrbXl0aGVtZTMrdGhlbWUobGVnZW5kLnRpdGxlID0gZWxlbWVudF9ibGFuaygpKQ0KDQojYiArIGFubm90YXRlKGdlb20gPSAidGV4dCIsIHggPSAxMS41LCB5ID0gMiwgbGFiZWwgPSBsYWJlbC50ZXh0LCANCiAgICAgICAgICAgICAjZmFtaWx5ID0gInNlcmlmIiwgaGp1c3QgPSAwLCBwYXJzZSA9IFRSVUUsIHNpemUgPSA0KW0NCmIrZ2VvbV90ZXh0KGRhdGEgPSBteS5lcXMsIGFlcyh4ID0gMTMuNywgeSA9IDIuNSwgbGFiZWwgPSBWMSksIA0KICAgICAgICAgIGNvbG9yID0gJ2JsYWNrJywgIHBhcnNlID0gVFJVRSwgc2l6ZT00KQ0KZGV0YWNoKHBhY2thZ2U6cGx5cikNCiNnZ3NhdmUoIkQ6L1IvUGljdHVyZXMvSGVpZ2h0L0hlaWdodGNob3JuLnBuZyIsIHdpZHRoPTgsIGhlaWdodD00LCBkcGk9NTAwKQ0KYGBgDQojIyMjYmFzZSBwaG90b3BlcmlvZA0KDQpgYGB7cixmaWcuaGVpZ2h0PTQsIGZpZy53aWR0aD0xMH0NCmxpYnJhcnkocGx5cikNClBiPC1IY2hyb25QcDElPiUNCiAgIG11dGF0ZShwYj0xL3Nsb3BlKQ0KDQpsbV9lcW4gPC0gZnVuY3Rpb24oUGIpew0KICBtIDwtIGxtKHBiIH4gUHBtLCBQYik7DQogIGVxIDwtIHN1YnN0aXR1dGUoaXRhbGljKHkpID09IFBwbSArIHBiICUuJSBpdGFsaWMoUHBtKSoiLCJ+fml0YWxpYyhSKV4yfiI9In5yMiwgDQogICAgICAgICAgICAgICAgICAgbGlzdChQcG0gPSBmb3JtYXQoY29lZihtKVsxXSwgZGlnaXRzID0gMiksIA0KICAgICAgICAgICAgICAgICAgICAgICAgIHBiID0gZm9ybWF0KGNvZWYobSlbMl0sIGRpZ2l0cyA9IDIpLCANCiAgICAgICAgICAgICAgICAgICAgICAgcjIgPSBmb3JtYXQoc3VtbWFyeShtKSRyLnNxdWFyZWQsIGRpZ2l0cyA9IDMpKSkNCiAgYXMuY2hhcmFjdGVyKGFzLmV4cHJlc3Npb24oZXEpKTsgICAgICAgICAgICAgICAgIA0KfQ0KDQplcW5zIDwtIGRkcGx5KFBiLC4oU3RhZ2UpLGxtX2VxbikNCg0KUGIlPiUNCiAgZ2dwbG90KGFlcyh4PVBwbSwgeT1wYiwgY29sb3VyPWZhY3RvcihJRCksbGFiZWw9R3Jvd3RoUm90YXRpb24pKStnZW9tX3RleHQoKSt0aGVtZV9idygpK3hsYWIoIk1lYW4gcGhvdG9wZXJpb2QgKGgpIikreWxhYigiMS95IikrDQogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIHNlID0gVFJVRSwgIGNvbG91cj0iZGFya2dyZXkiKSsNCiAgZmFjZXRfd3JhcCh+U3RhZ2UsbmNvbCA9IDIpK215dGhlbWUzK3RoZW1lKGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSkrDQogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoOSwgMTgsIGJ5ID0zKSwgbGltaXRzPWMoOSwxOCkpKw0KICBnZW9tX3RleHQoZGF0YSA9IGVxbnMsIGFlcyh4ID0gMTMuNSwgeSA9IDIuNSwgbGFiZWwgPSBWMSksIA0KICAgICAgICAgIGNvbG9yID0gJ2JsYWNrJywgIHBhcnNlID0gVFJVRSwgc2l6ZT00LjgpDQpkZXRhY2gocGFja2FnZTpwbHlyKQ0KI2dnc2F2ZSgiRDovUi9QaWN0dXJlcy9IZWlnaHQvSGVpZ2h0Y2hvcm55MS5wbmciLCB3aWR0aD04LCBoZWlnaHQ9NCwgZHBpPTUwMCkNCg0KYGBgDQoNCmBgYHtyfQ0KSGNocm9uUHANClg8LUhjaHJvblBwMSRQcG0NClk8LUhjaHJvblBwMSRzbG9wZQ0KWHNxPC1YXjINClhjdWI8LVheMw0KcGxvdChYLFksIHBjaD0xOSkNCm1vZGVsMTwtbG0oWX5YKQ0KbW9kZWwyPC1sbShZflgrWHNxKQ0KbW9kZWwzPC1sbShZflgrWHNxK1hjdWIpDQptb2RfbG0gPC1sbShZflgqKFg8MTQuMikrWCooWD49MTQuMiksZGF0YT1IY2hyb25QcCkNCmFub3ZhKG1vZGVsMSkNCnN1bW1hcnkobW9kZWwxKQ0KYW5vdmEobW9kZWwyKQ0Kc3VtbWFyeShtb2RlbDIpDQphbm92YShtb2RlbDMpDQpzdW1tYXJ5KG1vZGVsMykNCmFibGluZShtb2RlbDEsIGNvbD0icmVkIikNClhWPC1zZXEobWluKFgpLG1heChYKSwwLjAxKQ0KeXY8LXByZWRpY3QobW9kZWwyLGxpc3QoWD1YVixYc3E9WFZeMikpDQpsaW5lcyhYVix5dixjb2w9ImJsdWUiKQ0KICANCiAgDQpgYGANCg0KDQojIyMgRml0IGEgcG9seW5vbWlhbCByZWdyZXNzaW9uIG1vZGVsDQojIGBgYHtyfQ0KIyBIY2hyb25QcDENCiMgWDwtSGNocm9uUHAxJFBtZWFuDQojIFk8LUhjaHJvblBwMSRzbG9wZQ0KIyBYc3E8LVheMg0KIyBYY3ViPC1YXjMNCiMgcGxvdChYLFksIHBjaD0xOSkNCiMgbW9kZWwxPC1sbShZflgpDQojIG1vZGVsMjwtbG0oWX5YK1hzcSkNCiMgbW9kZWwzPC1sbShZflgrWHNxK1hjdWIpDQojIG1vZF9sbSA8LWxtKFl+WCooWDwxNC4yKStYKihYPj0xNC4yKSxkYXRhPUhjaHJvblBwMSkNCiMgYW5vdmEobW9kZWwxKQ0KIyBzdW1tYXJ5KG1vZGVsMSkNCiMgYW5vdmEobW9kZWwyKQ0KIyBzdW1tYXJ5KG1vZGVsMikNCiMgYW5vdmEobW9kZWwzKQ0KIyBzdW1tYXJ5KG1vZGVsMykNCiMgYWJsaW5lKG1vZGVsMSwgY29sPSJyZWQiKQ0KIyBYVjwtc2VxKG1pbihIY2hyb25QcDEkUG1lYW4pLG1heChIY2hyb25QcDEkUG1lYW4pLDAuMDEpDQojIHl2PC1wcmVkaWN0KG1vZGVsMixsaXN0KFg9WFYsWHNxPVhWXjIpKQ0KIyBsaW5lcyhYVix5dixjb2w9ImJsdWUiKQ0KIyB0aXRsZSh4bGFiPSJNZWFuIHBob3RvcGVyaW9kIChoKSAiLHlsYWI9IkhlaWdodGNocm9uIChtbS9jZCApIikNCg0KDQoNCg0KIyMgRGVmaW5lIHN0YXRzIGZ1bmN0aW9uDQoNCiogVXNpbmcgR2F1Y2ggZXQgYWwuIDIwMDMgKE1vZGVsIGV2YWx1YXRpb24gYnkgY29tcGFyaXNvbiBvZiBtb2RlbC1iYXNlZCBwcmVkaWN0aW9ucyBhbmQgbWVhc3VyZWQgdmFsdWVzLiBBZ3Jvbi4gSi4gOTUsIDE0NDItMTQ0NikgDQpgYGB7ciBTdGF0cywgaW5jbHVkZSA9IFRSVUUsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGZpZy5oZWlnaHQ9OCwgZmlnLndpZHRoPTh9DQoNCiMgIyBSMg0KIyB0ZXN0REYgPC0gZGF0YS5mcmFtZShhPWMoMSwyLDMsNCw1KSwgYj1jKDEwLDIwLDEwLDQwLDUwKSkNCiMgDQojIG15UjIgPC0gZnVuY3Rpb24ocCxvKSB7DQojICByZXR1cm4oc3VtbWFyeShsbShwfm8sIG5hLmFjdGlvbj1uYS5leGNsdWRlKSkkci5zcXVhcmVkKSANCiMgfQ0KIyANCiMgdGVzdERGICU+JQ0KIyAgIHN1bW1hcmlzZSh0aGlzUjIgPSBteVIyKGEsYikpDQoNCiMgZ2F1Y2ggTVNFIGNvbXBvbmVudHMNCmdhdWNoU3RhdHMgPC0gZnVuY3Rpb24oc2ltLCBtZWFzKSB7DQoNCiAgbl9zIDwtIGxlbmd0aChzaW0pDQogIG5fbSA8LSBsZW5ndGgobWVhcykNCiAgbW9kZWwgPC0gbG0obWVhc35zaW0pDQogIHNpbV9zcSA8LSBzdW0oKHNpbSAtIG1lYW4oc2ltKSleMikNCiAgbWVzX3NxIDwtIHN1bSgobWVhcyAtIG1lYW4obWVhcykpXjIpDQogIHIyIDwtIHN1bW1hcnkobW9kZWwpJHIuc3F1YXJlZA0KICBzbG9wZSA8LSBtb2RlbCRjb2VmZmljaWVudHNbWzJdXQ0KDQogIHNiIDwtIChzdW0obWVhbihtZWFzKSkgLSBzdW0obWVhbihzaW0pKSleMg0KICBudSA8LSAoMS1zbG9wZSleMiAqIChzaW1fc3Evbl9zKQ0KICBsYyA8LSAoMS1yMikgKiAobWVzX3NxL25fbSkNCiAgbXNkIDwtIHNiK251K2xjDQoNCiAgc2JfciA8LSByb3VuZCgoc2IvbXNkKSoxMDAsMSkNCiAgbnVfciA8LSByb3VuZCgobnUvbXNkKSoxMDAsMSkNCiAgbGNfciA8LSByb3VuZCgobGMvbXNkKSoxMDAsMSkNCg0KICBtc2RfciA8LSBzYl9yK251X3IrbGNfcg0KDQogICMgc2VsZWN0IHdoaWNoIHZhcmlhYmxlcyB0byBvdXRwdXQNCiAgb3V0IDwtIGMoc2JfcixudV9yLGxjX3IsIG1zZF9yLCByb3VuZChyMioxMDAsMSkpDQoNCiAgcmV0dXJuKG91dCkNCg0KfQ0KYGBgDQoNCiMjIFRlc3Qgc3RhdHMgZnVuY3Rpb25zIHVzZWQNCg0KYGBge3J9DQpzIDwtIGMoNDIzMS45NzIsMzkzNS42MDQsMzc3OS42NTIsMzYyNy42ODcsMzM2My40OTksMzIzMC41NjYsMjg2OC4xMTQsMjg2OC44MjcpDQptIDwtIGMoNDk4Ny42Niw1NjM2LjA5LDQ3NTQuMDYsNDExNC41Myw0MTQxLjcyLDM3MDQuMDYsNTE0Mi4xOSw0NzYyLjAzKQ0KDQp4IDwtIGdhdWNoU3RhdHMocyxtKQ0KDQp0ZW1wRGYgPC0gZGF0YS5mcmFtZShzdGF0TmFtZT1jKCJTQiIsIk5VIiwiTEMiLCJyX01TRCIsIlIyIiksIHN0YXRWYWx1ZT14KQ0KIGthYmxlKHRlbXBEZiwgZGlnaXRzPSA0KQ0KdGVtcERmMiA8LSBkYXRhLmZyYW1lKFByZWRpY3RlZD1zLCBPYnNlcnZlZD1tKQ0KDQp4IDwtIHRlbXBEZjIgJT4lDQogIHN1bW1hcmlzZSgNCiAgICBuID0gbigpLA0KICAgIHIyID0gZ2F1Y2hTdGF0cyhQcmVkaWN0ZWQsT2JzZXJ2ZWQpWzVdLA0KICAjICBybXNlID0gcm91bmQocm1zZShQcmVkaWN0ZWQsT2JzZXJ2ZWQpLDApLA0KICAgIHJfcm1zZSA9IHJvdW5kKHJtc2UoUHJlZGljdGVkLE9ic2VydmVkKS9tZWFuKE9ic2VydmVkKSoxMDAsMSksDQogICAgbnNlID1mb3JtYXQoTlNFKFByZWRpY3RlZCxPYnNlcnZlZCksIGRpZ2l0cz0zKSwNCiAgICBzYiA9IGdhdWNoU3RhdHMoUHJlZGljdGVkLE9ic2VydmVkKVsxXSwNCiAgbnUgPSBnYXVjaFN0YXRzKFByZWRpY3RlZCxPYnNlcnZlZClbMl0sDQogIGxjID0gZ2F1Y2hTdGF0cyhQcmVkaWN0ZWQsT2JzZXJ2ZWQpWzNdDQogICkgJT4lIA0KICB0KCkgDQoNCmRmIDwtIGRhdGEuZnJhbWUoc3RhdCA9IHJvdy5uYW1lcyh4KSxzdGF0dmFsdWUgPSB4WywxXSkNCg0KZGYgJT4lDQogIGthYmxlKGZvcm1hdCA9ICJtYXJrZG93biIsZGlnaXRzID0gNCkNCiNmb3JtYXQoY29lZihtKVsyXSwgZGlnaXRzID0gMikNCmBgYA0KIyMgTG9hZCBzaW11bGF0ZWQgZGF0YWJhc2UNCiMjIGNyZWF0ZSBmdW5jdGlvbiB0byByZWFkIGRhdGEgKEp1c3RpbidzIHNjcmlwdCkNCmBgYHtyIExvYWRTaW0sIGluY2x1ZGUgPSBGQUxTRSwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9OH0NCkdldEFwc2ltTkdUYWJsZSA8LSBmdW5jdGlvbihkYkxvYywgdGFibGUpIA0Kew0KICBjb25uZWN0aW9uIDwtIGRiQ29ubmVjdChTUUxpdGUoKSwgZGJuYW1lID0gZGJMb2MsIGZsYWdzID0gU1FMSVRFX1JXKQ0KICB0YWJsZSA8LSBkYlJlYWRUYWJsZShjb25uZWN0aW9uLCB0YWJsZSwgcm93Lm5hbWVzPU5VTEwpDQogIGRiRGlzY29ubmVjdChjb25uZWN0aW9uKQ0KICByZXR1cm4odGFibGUpDQp9DQoNCmBgYA0KIyBsb2FkIGFkZHJlc3Mgb2YgZGINCiMgc2V0IHRhYmxlIHRvIGJlIGVucXVpZXJkDQojIGxvYWQgdGFibGUgaW50byBhbiBvYmplY3QNCiMgbWFrZSBpdCBhIGRhdGFmcmFtZQ0KIyBjaGFuZ2UgZGF0ZSB0byBjb3JlcmN0IGZvcm1hdCANCiMgZXhwbG9yZSB0aGUgZGYNCmBgYHtyfQ0KZGIuYWRkcmVzcyA8LSAiRDpcXEFQU0lNWDJcXFByb3RvdHlwZXNcXEx1Y2VybmVcXEx1Y2VybmVWYWxpZGF0aW9uLmRiIg0KdGFibGVOYW1lPC0iUmVwb3J0Ig0KRGJUYWJsZSA8LSBHZXRBcHNpbU5HVGFibGUoZGIuYWRkcmVzcyx0YWJsZU5hbWUpDQpkZiA8LSBhcy5kYXRhLmZyYW1lKERiVGFibGUpDQpkZiRDbG9jay5Ub2RheSA8LSB5bWRfaG1zKGRmJENsb2NrLlRvZGF5KQ0Kc3RyKGRmKQ0Kc3VtbWFyeShkZikNCmhlYWQoZGYpICMgc2ltdWxhdGlvbiByZXN1bHRzDQpgYGANCiMgZ2V0IHNpbSBuYW1lcyAoZGlmZmVyZW50IHRhYmxlKQ0KIyBtZXJnZSBuYW1lcyANCiMgcmVtb3ZlIHVuZWNlc3NhcnkgdmFyaWFibGVzDQpgYGB7cn0NCnNpbU5hbWVEZiA8LSBhcy5kYXRhLmZyYW1lIChHZXRBcHNpbU5HVGFibGUoZGIuYWRkcmVzcywiX1NpbXVsYXRpb25zIikpDQpteURiIDwtIG1lcmdlKGRmLCBzaW1OYW1lRGYsIGJ5Lng9IGMoIlNpbXVsYXRpb25JRCIpLCBieS55PSBjKCJJRCIpKQ0KDQoNCiNzdHIobXlEYikNCmhlYWQobXlEYikNCnN1bW1hcnkobXlEYikNCg0KIyBteURiICU+JQ0KIyAgIGRwbHlyOjpzZWxlY3QoTmFtZSkgJT4lDQojICAgdW5pcXVlKCkNCg0KYGBgDQojIyBQcmVwYXJlIG1lcmdlDQojIyBBZGQgaW5mbyBmb3IgbWVyZ2luZw0KIyMgc2VsZWN0IHZhcmlhYmxlcyB0aGF0IGFyZSBmb3IgY29tcGFyaW5nIHdpdGggb2JzZXJ2ZWQgZGF0YQ0KDQpgYGB7cn0NCnNpbUQgPC0gbXlEYiAlPiUNCiAgZHBseXI6OnNlbGVjdChOYW1lLENsb2NrLlRvZGF5LExBSSxTV0MsSGVpZ2h0LHNob290YmlvbWFzcyxSb290V3QsIFN0ZW1XdCwgTGVhZld0LE5vZGVOdW1iZXIpICU+JQ0KICB0aWR5cjo6Z2F0aGVyKCJWYXJpYWJsZSIsIlByZWRpY3RlZCIsTEFJOk5vZGVOdW1iZXIpICU+JQ0KICBtdXRhdGUoTmFtZSA9IGFzLmZhY3RvcihOYW1lKSkgJT4lDQogIG11dGF0ZShWYXJpYWJsZSA9IGFzLmZhY3RvcihWYXJpYWJsZSkpICU+JQ0KICBtdXRhdGUoQ2xvY2suVG9kYXkgPSB5bWRfaG1zKENsb2NrLlRvZGF5KSkNCg0KaGVhZChzaW1EKQ0Kc3VtbWFyeShzaW1EKQ0KDQpoZWFkKE9ic0gpDQptZXJnZWRmPC1tZXJnZShvYnNITixzaW1ELGJ5PWMoIkNsb2NrLlRvZGF5IiwiTmFtZSIsIlZhcmlhYmxlIikpDQpzdW1tYXJ5KG1lcmdlZGYpDQpzdHIobWVyZ2VkZikNCm1lcmdlZGYNCg0KYGBgDQojIyNteXRoZW1lIGZvciBvYnNlcnZlZCBhbmQgcHJlZGljdGVkIGdyYXBocw0KYGBge3J9DQpteXRoZW1lMjwtdGhlbWUoDQogICAgIHBhbmVsLnNwYWNpbmc9dW5pdCguMDEsICJsaW5lcyIpLA0KICAgICBwYW5lbC5ib3JkZXIgPSBlbGVtZW50X3JlY3QoY29sb3VyID0gImJsYWNrIixzaXplPTEpLCANCiAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgYXhpcy5saW5lID0gZWxlbWVudF9saW5lKGNvbG91ciA9ICJibGFjayIsc2l6ZSA9IDEpLA0KICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChmYWNlID0gInBsYWluIiwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gMTQsIHZqdXN0PTAuNSwgaGp1c3QgPSAxKSwNCiAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJwbGFpbiIsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDE0KSwNCiAgICAgYXhpcy50aXRsZS54PWVsZW1lbnRfdGV4dChmYWNlPSJib2xkIixjb2xvdXI9ImJsYWNrIixzaXplID0gMTQpLA0KICAgICBheGlzLnRpdGxlLnk9ZWxlbWVudF90ZXh0KGZhY2U9ImJvbGQiLGNvbG91cj0iYmxhY2siLHNpemUgPSAxNCksDQogICAgIHN0cmlwLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoY29sb3VyID0gImJsYWNrIiwgZmlsbCA9ICJ3aGl0ZSIsc2l6ZT0xKSwNCiAgICAgc3RyaXAudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemU9MTQsIGFuZ2xlPTAsIGZhY2UgPSAicGxhaW4iKSwgDQogICAgIHN0cmlwLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplPTE0LCBmYWNlPSJwbGFpbiIpLA0KICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3VyPSJibGFjayIsIHNpemU9MTQsIGZhY2U9ImJvbGQiKSwNCiAgICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZCIsIHZqdXN0ID0gMC41LCBzaXplID0gMTQpKQ0KYGBgDQoNCg0KIyMgTm9kZSBudW1iZXINCiNUaW1lIHNlcmllcw0KIyMgb2JzIFZzIFByZSBmb3IgZWFjaCBleHBlcmltZW50DQojIyAxOTk3LTIwMDENCmBgYHtyLGZpZy5oZWlnaHQ9NCwgZmlnLndpZHRoPTl9DQpvYnNoZWlnaHQxPC1PYnNIJT4lZHBseXI6OmZpbHRlcihOYW1lPT0iSXZlcnNlbl84V2F0ZXJpcnIiKQ0KICANCiBzaW1EMTwtc2ltRCU+JQ0KICAgbXV0YXRlKENsb2NrLlRvZGF5ID0geW1kX2htcyhDbG9jay5Ub2RheSkpJT4lDQogICBkcGx5cjo6ZmlsdGVyKFZhcmlhYmxlPT0iSGVpZ2h0IiklPiUNCiAgIGRwbHlyOjpmaWx0ZXIoTmFtZT09Ikl2ZXJzZW5fOFdhdGVyaXJyIikNCiBzdHIoc2ltRDEpDQogc2ltRDElPiUNCiBnZ3Bsb3QoYWVzKHg9Q2xvY2suVG9kYXkseT1QcmVkaWN0ZWQpKStnZW9tX2xpbmUoc2l6ZT0xKSt0aGVtZV9idygpKw0KIGZhY2V0X3dyYXAofklELG5jb2wgPSAyKSsNCiBnZW9tX3BvaW50KGRhdGE9b2JzaGVpZ2h0MSwgYWVzKHg9Q2xvY2suVG9kYXkxLCB5PU9ic2VydmVkKSxjb2xvdXI9ImdyZWVuIixzaXplPTMpKw0KIHRoZW1lKGxlZ2VuZC50aXRsZT1lbGVtZW50X2JsYW5rKCksbGVnZW5kLnBvc2l0aW9uID0gImJsYW5rIikreGxhYigiRGF0ZSIpK3lsYWIoIlBsYW50IGhlaWdodCAobW0pIikrDQogbXl0aGVtZTIrDQogYW5ub3RhdGUoInRleHQiLCB4PXltZF9obXMoIjE5OTktMTAtMjQgMTI6MDA6MDAiKSwgeT03NTAsIHNpemUgPSA1LCBsYWJlbCA9InBhc3RlKFJfUk1TRCA9PSAzNy42LCclJykiLCBwYXJzZT1UKQ0KICAgI2dlb21fdGV4dChhZXMoeD15bWRfaG1zKCIxOTk5LTEwLTI0IDEyOjAwOjAwIiksIHk9NzUwLCBsYWJlbD0iUl9STVNEID0gMzcuNiUiLHNpemU9NSkpDQogDQogI2dnc2F2ZSgiRDovUi9QaWN0dXJlcy9IZWlnaHQvSXZlcnNlbl84V2F0ZXJpcnJoZWlnaHQxLnBuZyIsIHdpZHRoPTgsIGhlaWdodD00LCBkcGk9NTAwKQ0KYGBgDQojIzIwMDItMjAwNA0KYGBge3IsICBmaWcuaGVpZ2h0PTQsIGZpZy53aWR0aD04fQ0Kb2JzaGVpZ2h0Mjwtb2JzSE4lPiUgDQogIGRwbHlyOjpmaWx0ZXIoTmFtZT09Ikl2ZXJzZW5fOTFEZWZvbGlhdGlvbkxMIiklPiUNCiAgZHBseXI6OmZpbHRlcihWYXJpYWJsZT09IkhlaWdodCIpDQoNCnNpbUQyPC1zaW1EJT4lDQogIG11dGF0ZShDbG9jay5Ub2RheSA9IHltZF9obXMoQ2xvY2suVG9kYXkpKSU+JQ0KICBkcGx5cjo6ZmlsdGVyKFZhcmlhYmxlPT0iSGVpZ2h0IiklPiUNCiAgZHBseXI6OmZpbHRlcihOYW1lPT0iSXZlcnNlbl85MURlZm9saWF0aW9uTEwiKSU+JQ0KICAgZHBseXI6OmZpbHRlcihDbG9jay5Ub2RheT4iMjAwMi0wNi0wMSIpDQpzdHIoc2ltRDIpDQpzaW1EMiU+JQ0KZ2dwbG90KGFlcyh4PUNsb2NrLlRvZGF5LHk9UHJlZGljdGVkKSkrZ2VvbV9saW5lKHNpemU9MSkrdGhlbWVfYncoKSsNCiAgZmFjZXRfd3JhcCh+SUQsbmNvbCA9IDEpKw0KICBnZW9tX3BvaW50KGRhdGE9b2JzaGVpZ2h0MiwgYWVzKHg9Q2xvY2suVG9kYXkxLCB5PU9ic2VydmVkKSxjb2xvdXI9ImdyZWVuIixzaXplPTMpKw0KICB0aGVtZShsZWdlbmQudGl0bGU9ZWxlbWVudF9ibGFuaygpLGxlZ2VuZC5wb3NpdGlvbiA9ICJibGFuayIpK3hsYWIoIkRhdGUiKSt5bGFiKCJQbGFudCBoZWlnaHQgKG1tKSIpKw0KICBteXRoZW1lMisNCiAgYW5ub3RhdGUoInRleHQiLCB4PXltZF9obXMoIjIwMDMtMDctMjQgMTI6MDA6MDAiKSwgeT03NTAsIHNpemUgPSA1LCBsYWJlbCA9InBhc3RlKFJfUk1TRCA9PSAyNy42LCclJykiLCBwYXJzZT1UKQ0KICNnZW9tX3RleHQoYWVzKHg9eW1kX2htcygiMjAwMy0wNy0yNCAxMjowMDowMCIpLCB5PTc1MCwgbGFiZWw9IlJfUk1TRCA9IDI3LjYlIixzaXplPTUpKQ0KICNnZ3NhdmUoIkQ6L1IvUGljdHVyZXMvSGVpZ2h0L0l2ZXJzZW5fOTFEZWZvbGlhdGlvbkxMaGVpZ2h0MS5wbmciLCB3aWR0aD04LCBoZWlnaHQ9NCwgZHBpPTUwMCkNCg0KYGBgDQpgYGB7ciwgIGZpZy5oZWlnaHQ9NCwgZmlnLndpZHRoPTh9DQpvYnNoZWlnaHQyPC1vYnNITiU+JSANCiAgZHBseXI6OmZpbHRlcihOYW1lPT0iSXZlcnNlbl8xMjFEZWZvbGlhdGlvbkxMRkRGRDUiKSU+JQ0KICBkcGx5cjo6ZmlsdGVyKFZhcmlhYmxlPT0iSGVpZ2h0IikNCg0Kc2ltRDJhPC1zaW1EJT4lDQogIG11dGF0ZShDbG9jay5Ub2RheSA9IHltZF9obXMoQ2xvY2suVG9kYXkpKSU+JQ0KICBkcGx5cjo6ZmlsdGVyKFZhcmlhYmxlPT0iSGVpZ2h0IiklPiUNCiAgZHBseXI6OmZpbHRlcihOYW1lPT0iSXZlcnNlbl8xMjFEZWZvbGlhdGlvbkxMRkRGRDUiKSU+JQ0KICBkcGx5cjo6ZmlsdGVyKENsb2NrLlRvZGF5PCIyMDE1LTAxLTA2IikNCg0KDQpzaW1EMmI8LXNpbUQlPiUNCiAgbXV0YXRlKENsb2NrLlRvZGF5ID0geW1kX2htcyhDbG9jay5Ub2RheSkpJT4lDQogIGRwbHlyOjpmaWx0ZXIoVmFyaWFibGU9PSJIZWlnaHQiKSU+JQ0KICBkcGx5cjo6ZmlsdGVyKE5hbWU9PSJJdmVyc2VuXzEyMURlZm9saWF0aW9uTExGREZENSIpJT4lDQogIGRwbHlyOjpmaWx0ZXIoQ2xvY2suVG9kYXk+IjIwMTUtMDEtMzAiKQ0Kc2ltRDI8LXJiaW5kKHNpbUQyYSxzaW1EMmIpDQogIA0KICAgDQpzdHIoc2ltRDIpDQpzaW1EMiU+JQ0KZ2dwbG90KGFlcyh4PUNsb2NrLlRvZGF5LHk9UHJlZGljdGVkKSkrZ2VvbV9saW5lKHNpemU9MSkrdGhlbWVfYncoKSsNCiAgZmFjZXRfd3JhcCh+SUQsbmNvbCA9IDEpKw0KICBnZW9tX3BvaW50KGRhdGE9b2JzaGVpZ2h0MiwgYWVzKHg9Q2xvY2suVG9kYXkxLCB5PU9ic2VydmVkKSxjb2xvdXI9ImdyZWVuIixzaXplPTMpKw0KICB0aGVtZShsZWdlbmQudGl0bGU9ZWxlbWVudF9ibGFuaygpLGxlZ2VuZC5wb3NpdGlvbiA9ICJibGFuayIpK3hsYWIoIkRhdGUiKSt5bGFiKCJQbGFudCBoZWlnaHQgKG1tKSIpKw0KICAgbXl0aGVtZTIrDQogIGFubm90YXRlKCJ0ZXh0IiwgeD15bWRfaG1zKCIyMDE2LTA3LTI0IDEyOjAwOjAwIiksIHk9OTIwLCBzaXplID0gNSwgbGFiZWwgPSJwYXN0ZShSX1JNU0QgPT0gNDAsJyUnKSIgLCBwYXJzZT1UKQ0KICNnZ3NhdmUoIkQ6L1IvUGljdHVyZXMvSGVpZ2h0L0l2ZXJzZW5fMTIxRGVmb2xpYXRpb25MTEZERkQ1aGVpZ2h0MS5wbmciLCB3aWR0aD04LCBoZWlnaHQ9NCwgZHBpPTUwMCkNCiAgDQogIA0KDQoNCmBgYA0KIyMyMDAwLTIwMDINCmBgYHtyLCAgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9OH0NCm9ic2hlaWdodDM8LW9ic0hOJT4lDQogIGRwbHlyOjpmaWx0ZXIoQ29sbGVjdGlvbj09IjIwMDBfMjAwMiIpJT4lDQogIGRwbHlyOjpmaWx0ZXIoVmFyaWFibGU9PSJIZWlnaHQiKQ0KDQpzaW1EM0E8LXNpbUQlPiUNCiAgbXV0YXRlKENsb2NrLlRvZGF5ID0geW1kX2htcyhDbG9jay5Ub2RheSkpJT4lDQogIGRwbHlyOjpmaWx0ZXIoQ2xvY2suVG9kYXk+IjIwMDAtMTAtMjQgMTI6MDA6MDAiKSU+JQ0KICBkcGx5cjo6ZmlsdGVyKENsb2NrLlRvZGF5PCIyMDAyLTA3LTAxIDEyOjAwOjAwIiklPiUNCiAgZHBseXI6OmZpbHRlcihOYW1lPT1jKCJJdmVyc2VuXzlTb3dpbmdEYXRlU0QxV2F0ZXJpcnIiLCJJdmVyc2VuXzlTb3dpbmdEYXRlU0QyV2F0ZXJpcnIiLCJJdmVyc2VuXzlTb3dpbmdEYXRlU0QzV2F0ZXJpcnIiLCJJdmVyc2VuXzlTb3dpbmdEYXRlU0Q0V2F0ZXJpcnIiKSklPiUNCiAgZHBseXI6OmZpbHRlcihWYXJpYWJsZT09IkhlaWdodCIpDQogIA0KDQpERjwtZGF0YS5mcmFtZShOYW1lPWMoIkl2ZXJzZW5fOVNvd2luZ0RhdGVTRDFXYXRlcmlyciIsIkl2ZXJzZW5fOVNvd2luZ0RhdGVTRDJXYXRlcmlyciIsIkl2ZXJzZW5fOVNvd2luZ0RhdGVTRDNXYXRlcmlyciIsIkl2ZXJzZW5fOVNvd2luZ0RhdGVTRDRXYXRlcmlyciIpLElEPSBjKCJFMklMTFMxIiwiRTJJTExTMiIsIkUySUxMUzMiLCJFMklMTFM0IikpDQpzaW1EMzwtbWVyZ2UoREYsc2ltRDNBLCBieT1jKCJOYW1lIikpDQoNCnAxPC1zaW1EMyU+JQ0KZ2dwbG90KGFlcyh4PUNsb2NrLlRvZGF5LHk9UHJlZGljdGVkKSkrZ2VvbV9saW5lKHNpemU9MSkrdGhlbWVfYncoKSsNCiAgZ2VvbV9wb2ludChkYXRhPW9ic2hlaWdodDMsIGFlcyh4PUNsb2NrLlRvZGF5MSwgeT1PYnNlcnZlZCksY29sb3VyPSJncmVlbiIsc2l6ZT0zKSsNCiAgZmFjZXRfd3JhcCh+SUQsbmNvbCA9IDIpKw0KICB0aGVtZShsZWdlbmQudGl0bGU9ZWxlbWVudF9ibGFuaygpLGxlZ2VuZC5wb3NpdGlvbiA9ICJibGFuayIpK3hsYWIoIkRhdGUiKSt5bGFiKCJQbGFudCBoZWlnaHQgKG1tKSIpKw0KICBteXRoZW1lMg0KDQpkYXRfdGV4dCA8LSBkYXRhLmZyYW1lKA0KICBsYWJlbCA9IGMoIlJfUk1TRT0yOC4yJSIsIlJfUk1TRT0zMy4yJSIsIlJfUk1TRT00OC42JSIsICJSX1JNU0U9MzQuNSUiKSwNCiAgSUQ9IGMoIkUySUxMUzEiLCJFMklMTFMyIiwiRTJJTExTMyIsIkUySUxMUzQiKSwNCiAgeD0geW1kX2htcygiMjAwMS0wMS0yNCAxMjowMDowMCIsICIyMDAxLTAxLTI0IDEyOjAwOjAwIiwiMjAwMS0wMS0yNCAxMjowMDowMCIsIjIwMDEtMDEtMjQgMTI6MDA6MDAiKSwNCiAgeT1jKDc1MCw3NTAsNzUwLDc1MCkpIA0KDQogcDEgK2dlb21fdGV4dChkYXRhPWRhdF90ZXh0LCBtYXBwaW5nID0gYWVzKHg9eCx5PXksIGxhYmVsID0gbGFiZWwpLGhqdXN0ICAgPSAtMC4xLHZqdXN0ICAgPSAtMSxzaXplPTUpICANCiANCiNnZ3NhdmUoIkQ6L1IvUGljdHVyZXMvSGVpZ2h0L0l2ZXJzZW5fOVNvd2luZ0RhdGVTRFdhdGVyaGVpZ2h0MS5wbmciLCB3aWR0aD04LCBoZWlnaHQ9OCwgZHBpPTUwMCkNCiAgDQpgYGANCg0KDQojIFN0YXRpc3RpYyBhbmQgR3JhcGgNCmBgYHtyLGZpZy5oZWlnaHQ9NiwgZmlnLndpZHRoPTh9DQptZXJnZWRmDQpzdW1tYXJ5KG1lcmdlZGYpDQpzdHIobWVyZ2VkZikNCg0KbWVyZ2VkZiAlPiUNCiAgICBkcGx5cjo6ZmlsdGVyKFZhcmlhYmxlPT0gIkhlaWdodCIpICU+JSANCiAgZ2dwbG90KGFlcyh4PU9ic2VydmVkLCB5PSBQcmVkaWN0ZWQsIA0KICAgICAgICAgIGNvbG91cj0gZmFjdG9yKE5hbWUpKSkgKw0KICBnZW9tX3BvaW50KHNpemU9MikrdGhlbWVfYncoKSsNCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgc2UgPSBUUlVFLCBsaW5ldHlwZSA9IDEsIGNvbG91cj0iZGFya2dyZXkiKSArDQogIGdlb21fYWJsaW5lKGludGVyY2VwdCA9IDAsIHNsb3BlID0gMSkgKw0KICBjb29yZF9maXhlZChyYXRpbyA9IDEpKw0KICBnZ3RpdGxlKCJQbGFudCBoZWlnaHQiKSsNCiAgZmFjZXRfd3JhcCh+SUQsIG5jb2wgPSA0KSsNCiAgdGhlbWUobGVnZW5kLnRpdGxlPWVsZW1lbnRfYmxhbmsoKSxsZWdlbmQucG9zaXRpb24gPSAiYmxhbmsiKSt4bGFiKCJPYnNlcnZlZCIpK3lsYWIoIlByZWRpY3RlZCIpKw0KICBteXRoZW1lMg0KICANCiAgI2dnc2F2ZSgiRDovUi9QaWN0dXJlcy9IZWlnaHQvcHJlZGljdGVkLnBuZyIsIHdpZHRoPTgsIGhlaWdodD02LCBkcGk9NTAwKQ0KYGBgDQoNCg0KIyMgMjAwMi0yMDA0DQoNCmBgYHtyLCAgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9MTB9DQptZXJnZWRmDQpzdW1tYXJ5KG1lcmdlZGYpDQpzdHIobWVyZ2VkZikNCg0KbWVyZ2VkZiAlPiUNCiAgICBkcGx5cjo6ZmlsdGVyKENvbGxlY3Rpb249PSIyMDAyXzIwMDQiKSU+JQ0KICBnZ3Bsb3QoYWVzKHg9T2JzZXJ2ZWQsIHk9IFByZWRpY3RlZCwgDQogICAgICAgICAgY29sb3VyPSBmYWN0b3IoTmFtZSkpKSArDQogIGdlb21fcG9pbnQoc2l6ZT0zKSt0aGVtZV9idygpKw0KICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBzZSA9IFRSVUUsIGxpbmV0eXBlID0gMSwgY29sb3VyPSJkYXJrZ3JleSIpICsNCiAgZ2VvbV9hYmxpbmUoaW50ZXJjZXB0ID0gMCwgc2xvcGUgPSAxKSArDQogIGNvb3JkX2ZpeGVkKHJhdGlvID0gMSkrDQogIGdndGl0bGUoIlBsYW50IGhlaWdodCIpKw0KICBmYWNldF9ncmlkKEdyb3d0aFNlYXNvbi54flJvdGF0aW9uLngpKw0KICB0aGVtZShsZWdlbmQudGl0bGU9ZWxlbWVudF9ibGFuaygpLGxlZ2VuZC5wb3NpdGlvbiA9ICJibGFuayIpK3hsYWIoIk9ic2VydmVkIikreWxhYigiUHJlZGljdGVkIikrDQogIHRoZW1lKGF4aXMudGl0bGUueD1lbGVtZW50X3RleHQoZmFjZT0iYm9sZCIsY29sb3VyPSJibGFjayIsc2l6ZSA9IDEyKSkrDQogIHRoZW1lKGF4aXMudGl0bGUueT1lbGVtZW50X3RleHQoZmFjZT0iYm9sZCIsY29sb3VyPSJibGFjayIsc2l6ZSA9IDEyKSkNCmBgYA0KDQoNCiMjIDIwMDAtMjAwMg0KDQpgYGB7cn0NCm1lcmdlZGYNCnN1bW1hcnkobWVyZ2VkZikNCnN0cihtZXJnZWRmKQ0KDQptZXJnZWRmICU+JQ0KICAgIGRwbHlyOjpmaWx0ZXIoQ29sbGVjdGlvbj09IjIwMDBfMjAwMiIpJT4lDQogIGdncGxvdChhZXMoeD1PYnNlcnZlZCwgeT0gUHJlZGljdGVkLCANCiAgICAgICAgICBjb2xvdXI9IGZhY3RvcihOYW1lKSkpICsNCiAgZ2VvbV9wb2ludChzaXplPTMpK3RoZW1lX2J3KCkrDQogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIHNlID0gVFJVRSwgbGluZXR5cGUgPSAxLCBjb2xvdXI9ImRhcmtncmV5IikgKw0KICBnZW9tX2FibGluZShpbnRlcmNlcHQgPSAwLCBzbG9wZSA9IDEpICsNCiAgY29vcmRfZml4ZWQocmF0aW8gPSAxKSsNCiAgZ2d0aXRsZSgiSGVpZ2h0IikrDQogIGZhY2V0X2dyaWQoR3Jvd3RoU2Vhc29uLnh+Um90YXRpb24ueCkrDQogIHRoZW1lKGxlZ2VuZC50aXRsZT1lbGVtZW50X2JsYW5rKCksbGVnZW5kLnBvc2l0aW9uID0gImJsYW5rIikreGxhYigiT2JzZXJ2ZWQiKSt5bGFiKCJQcmVkaWN0ZWQiKSsNCiAgdGhlbWUoYXhpcy50aXRsZS54PWVsZW1lbnRfdGV4dChmYWNlPSJib2xkIixjb2xvdXI9ImJsYWNrIixzaXplID0gMTIpKSsNCiAgdGhlbWUoYXhpcy50aXRsZS55PWVsZW1lbnRfdGV4dChmYWNlPSJib2xkIixjb2xvdXI9ImJsYWNrIixzaXplID0gMTIpKQ0KYGBgDQoNCg0KDQoNCmBgYHtyLCBmaWcud2lkdGg9OCwgZmlnLmhlaWdodD04LCB3YXJuaW5nPUZBTFNFfQ0KbWVyZ2VkZiAlPiUNCiAgICBkcGx5cjo6ZmlsdGVyKENvbGxlY3Rpb249PSIxOTk3XzIwMDEiKSU+JQ0KICBnZ3Bsb3QoYWVzKHg9T2JzZXJ2ZWQsIHk9IFByZWRpY3RlZCwgDQogICAgICAgICAgY29sb3VyPSBmYWN0b3IoTmFtZSkpKSArDQogIGdlb21fcG9pbnQoc2l6ZT0zKSt0aGVtZV9idygpICsNCiAgIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIHNlID0gVFJVRSwgbGluZXR5cGUgPSAxLCBjb2xvdXI9ImRhcmtncmV5IikgKw0KICBnZW9tX2FibGluZShpbnRlcmNlcHQgPSAwLCBzbG9wZSA9IDEpICsNCiAgY29vcmRfZml4ZWQocmF0aW8gPSAxKSArDQogIGdndGl0bGUoIlBsYW50IGhlaWdodCIpICArDQogIGZhY2V0X2dyaWQoR3Jvd3RoU2Vhc29uLnh+Um90YXRpb24ueCkrDQogIHRoZW1lKGxlZ2VuZC50aXRsZT1lbGVtZW50X2JsYW5rKCksbGVnZW5kLnBvc2l0aW9uID0gImJsYW5rIikreGxhYigiT2JzZXJ2ZWQiKSt5bGFiKCJQcmVkaWN0ZWQiKSsNCiAgdGhlbWUoYXhpcy50aXRsZS54PWVsZW1lbnRfdGV4dChmYWNlPSJib2xkIixjb2xvdXI9ImJsYWNrIixzaXplID0gMTIpKSsNCiAgdGhlbWUoYXhpcy50aXRsZS55PWVsZW1lbnRfdGV4dChmYWNlPSJib2xkIixjb2xvdXI9ImJsYWNrIixzaXplID0gMTIpKQ0KYGBgDQoNCg0KIyMgUk1TRQ0KDQpgYGB7cn0NCnN0cihtZXJnZWRmKQ0KDQptZXJnZWRmICU+JQ0KICBncm91cF9ieShJRCkgJT4lDQogIHN1bW1hcmlzZSgNCiAgICBuID0gbigpLA0KICAgIHIyID0gZ2F1Y2hTdGF0cyhQcmVkaWN0ZWQsT2JzZXJ2ZWQpWzVdLA0KICAjICBybXNlID0gcm91bmQocm1zZShQcmVkaWN0ZWQsT2JzZXJ2ZWQpLDApLA0KICAgIHJfcm1zZSA9IHJvdW5kKHJtc2UoUHJlZGljdGVkLE9ic2VydmVkKS9tZWFuKE9ic2VydmVkKSoxMDAsMSksDQogICAgbnNlID0gcm91bmQoTlNFKFByZWRpY3RlZCxPYnNlcnZlZCksMiksDQogICAgc2IgPSBnYXVjaFN0YXRzKFByZWRpY3RlZCxPYnNlcnZlZClbMV0sDQogIG51ID0gZ2F1Y2hTdGF0cyhQcmVkaWN0ZWQsT2JzZXJ2ZWQpWzJdLA0KICBsYyA9IGdhdWNoU3RhdHMoUHJlZGljdGVkLE9ic2VydmVkKVszXQ0KICApIA0KDQojIE5BUiA9IGZvcm1hdChjb2VmKG0pWzJdLCBkaWdpdHMgPSAyKQ0KDQojICU+JQ0KIyAgIGdyb3VwX2J5KFZhcmlhYmxlLE5hbWUpICU+JQ0KIyAgIHN1bW1hcmlzZV9lYWNoKGZ1bnMobWVhbikpDQogIA0KYGBgDQojIyMjI0hlaWdodCBhZw0KDQoNCg0KDQoNCg==